Class Polygon
A closed planar polygon. Parameterization of the curve is 0->n-1 where n is the number of vertices..
Examples
// Create a polygon.
var star = Polygon.Star(5, 3, 5);
Implements
Inherited Members
Namespace: Elements.Geometry
Assembly: Hypar.Elements.dll
Syntax
public class Polygon : Polyline, ICurve, ITransformable<Curve>, IBoundedCurve, IEnumerable<BoundedCurve>, IEnumerable, IEquatable<IndexedPolycurve>
Constructors
Polygon(Vector3[])
Construct a polygon from points. This is a convenience constructor
that can be used like this: new Polygon((0,0,0), (10,0,0), (10,10,0))
Declaration
public Polygon(params Vector3[] vertices)
Parameters
Type | Name | Description |
---|---|---|
Vector3[] | vertices | The vertices of the polygon. |
Polygon(Boolean, Vector3[])
Construct a polygon from points.
Declaration
public Polygon(bool disableValidation, params Vector3[] vertices)
Parameters
Type | Name | Description |
---|---|---|
System.Boolean | disableValidation | Should self-intersection testing be disabled? |
Vector3[] | vertices | The vertices of the polygon. |
Polygon(IList<Vector3>)
Construct a polygon.
Declaration
[JsonConstructor]
public Polygon(IList<Vector3> vertices)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IList<Vector3> | vertices | A collection of vertex locations. |
Polygon(IList<Vector3>, Boolean)
Construct a polygon.
Declaration
public Polygon(IList<Vector3> vertices, bool disableValidation = false)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IList<Vector3> | vertices | A collection of vertex locations. |
System.Boolean | disableValidation | Should self-intersection testing be disabled? |
Properties
Domain
The domain of the curve.
Declaration
[JsonIgnore]
public override Domain1d Domain { get; }
Property Value
Type | Description |
---|---|
Domain1d |
Overrides
End
The end of the polyline.
Declaration
[JsonIgnore]
public override Vector3 End { get; }
Property Value
Type | Description |
---|---|
Vector3 |
Overrides
IsClosedForRendering
Should the curve be considered closed for rendering?
Declaration
public override bool IsClosedForRendering { get; }
Property Value
Type | Description |
---|---|
System.Boolean |
Overrides
Methods
Area(Boolean)
Calculate the polygon's area in 3D.
Declaration
public double Area(bool signed = false)
Parameters
Type | Name | Description |
---|---|---|
System.Boolean | signed | When true will return a signed area, counter-clockwise polygons will yield a positive area, while clockwise polygons will yield a negative area. |
Returns
Type | Description |
---|---|
System.Double | A double representing the signed or absolute value of this Polygon's area. |
Center()
Calculate the center of the polygon as the average of vertices.
Declaration
public Vector3 Center()
Returns
Type | Description |
---|---|
Vector3 |
Centroid()
Calculate the centroid of the polygon.
Declaration
public Vector3 Centroid()
Returns
Type | Description |
---|---|
Vector3 |
Circle(Double, Int32)
Create a circle.
Declaration
[Obsolete("Please use Elements.Geometry.Circle.ToPolygon() instead.")]
public static Polygon Circle(double radius = 1, int divisions = 10)
Parameters
Type | Name | Description |
---|---|---|
System.Double | radius | The radius of the circle. |
System.Int32 | divisions | The number of divisions of the circle. |
Returns
Type | Description |
---|---|
Polygon | A circle as a Polygon tessellated into the specified number of divisions. |
CollinearPointsRemoved(Double)
Remove collinear points from this Polygon.
Declaration
public Polygon CollinearPointsRemoved(double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
System.Double | tolerance |
Returns
Type | Description |
---|---|
Polygon | New Polygon without collinear points. |
Contains(Polygon)
Tests if the supplied Polygon is within this Polygon without coincident edges when compared on a shared plane.
Declaration
public bool Contains(Polygon polygon)
Parameters
Type | Name | Description |
---|---|---|
Polygon | polygon | The Polygon to compare to this Polygon. |
Returns
Type | Description |
---|---|
System.Boolean | Returns true if every vertex of the supplied Polygon is within this Polygon when compared on a shared plane. Returns false if the supplied Polygon is not entirely within this Polygon, or if the supplied Polygon is null. |
Contains(Vector3)
Tests if the supplied Vector3 is within this Polygon in 3D without coincidence with an edge or vertex when compared on a shared plane.
Declaration
public bool Contains(Vector3 point)
Parameters
Type | Name | Description |
---|---|---|
Vector3 | point | The point to compare to this polygon. |
Returns
Type | Description |
---|---|
System.Boolean | Returns true if the supplied point is within this polygon when compared on a shared plane. |
Contains(Vector3, out Containment)
Tests if the supplied point is within this polygon in 3D, using a 2D method.
Declaration
public bool Contains(Vector3 point, out Containment containment)
Parameters
Type | Name | Description |
---|---|---|
Vector3 | point | The point to compare to this polygon. |
Containment | containment | Whether the point is inside, outside, at an edge, or at a vertex. |
Returns
Type | Description |
---|---|
System.Boolean | Returns true if the supplied point is within this polygon when compared on a shared plane. |
Contains3D(Polygon, out Containment)
Tests if the supplied polygon is within this Polygon or coincident with an edge.
Declaration
public bool Contains3D(Polygon polygon, out Containment containment)
Parameters
Type | Name | Description |
---|---|---|
Polygon | polygon | The polygon we want to know is inside this polygon. |
Containment | containment | The containment status. |
Returns
Type | Description |
---|---|
System.Boolean | Returns false if any part of the polygon is entirely outside of this polygon. |
Covers(Polygon)
Tests if the supplied Polygon is within this Polygon with or without edge coincident vertices when compared on a shared plane.
Declaration
public bool Covers(Polygon polygon)
Parameters
Type | Name | Description |
---|---|---|
Polygon | polygon | The Polygon to compare to this Polygon. |
Returns
Type | Description |
---|---|
System.Boolean | Returns true if every edge of the provided polygon is on or within this polygon when compared on a shared plane. Returns false if any edge of the supplied Polygon is outside this Polygon, or if the supplied Polygon is null. |
Covers(Vector3)
Tests if the supplied Vector3 is within this Polygon or coincident with an edge when compared on the XY plane.
Declaration
public bool Covers(Vector3 vector)
Parameters
Type | Name | Description |
---|---|---|
Vector3 | vector | The Vector3 to compare to this Polygon. |
Returns
Type | Description |
---|---|
System.Boolean | Returns true if the supplied Vector3 is within this Polygon or coincident with an edge when compared in the XY shared plane. Returns false if the supplied Vector3 is outside this Polygon, or if the supplied Vector3 is null. |
Difference(Polygon, Double)
Constructs the geometric difference between this Polygon and the supplied Polygon.
Declaration
public IList<Polygon> Difference(Polygon polygon, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
Polygon | polygon | The intersecting Polygon. |
System.Double | tolerance | An optional tolerance value. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IList<Polygon> | Returns a list of Polygons representing the subtraction of the supplied Polygon from this Polygon. Returns null if the area of this Polygon is entirely subtracted. Returns a list containing a representation of the perimeter of this Polygon if the two Polygons do not intersect. |
Difference(Polygon[])
Constructs the geometric difference between this Polygon and one or more supplied Polygons, using the default tolerance.
Declaration
public IList<Polygon> Difference(params Polygon[] polygons)
Parameters
Type | Name | Description |
---|---|---|
Polygon[] | polygons | The intersecting Polygons. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IList<Polygon> | Returns a list of Polygons representing the subtraction of the supplied Polygons from this Polygon. Returns null if the area of this Polygon is entirely subtracted. Returns a list containing a representation of the perimeter of this Polygon if the Polygons do not intersect. |
Difference(IList<Polygon>, IList<Polygon>, Double)
Constructs the geometric difference between two sets of polygons.
Declaration
public static IList<Polygon> Difference(IList<Polygon> firstSet, IList<Polygon> secondSet, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IList<Polygon> | firstSet | First set of polygons |
System.Collections.Generic.IList<Polygon> | secondSet | Second set of polygons |
System.Double | tolerance | An optional tolerance. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IList<Polygon> | Returns a list of Polygons representing the subtraction of the second set of polygons from the first set. |
Difference(IList<Polygon>, Double)
Constructs the geometric difference between this Polygon and the supplied Polygons.
Declaration
public IList<Polygon> Difference(IList<Polygon> difPolys, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IList<Polygon> | difPolys | The list of intersecting Polygons. |
System.Double | tolerance | An optional tolerance value. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IList<Polygon> | Returns a list of Polygons representing the subtraction of the supplied Polygons from this Polygon. Returns null if the area of this Polygon is entirely subtracted. Returns a list containing a representation of the perimeter of this Polygon if the two Polygons do not intersect. |
Disjoint(Polygon)
Tests if the supplied Polygon and this Polygon are coincident in any way when compared on a shared plane.
Declaration
public bool Disjoint(Polygon polygon)
Parameters
Type | Name | Description |
---|---|---|
Polygon | polygon | The Polygon to compare to this Polygon. |
Returns
Type | Description |
---|---|
System.Boolean | Returns true if the supplied Polygon do not intersect or touch this Polygon when compared on a shared plane or if the supplied Polygon is null. |
Disjoint(Vector3)
Tests if the supplied Vector3 is outside this Polygon when compared on a shared plane.
Declaration
public bool Disjoint(Vector3 vector)
Parameters
Type | Name | Description |
---|---|---|
Vector3 | vector | The Vector3 to compare to this Polygon. |
Returns
Type | Description |
---|---|
System.Boolean | Returns true if the supplied Vector3 is outside this Polygon when compared on a shared plane or if the supplied Vector3 is null. |
Equals(Object)
Is this polygon equal to the provided polygon?
Declaration
public override bool Equals(object obj)
Parameters
Type | Name | Description |
---|---|---|
System.Object | obj |
Returns
Type | Description |
---|---|
System.Boolean |
Overrides
Fillet(Double)
Fillet all corners on this polygon.
Declaration
public IndexedPolycurve Fillet(double radius)
Parameters
Type | Name | Description |
---|---|---|
System.Double | radius | The fillet radius. |
Returns
Type | Description |
---|---|
IndexedPolycurve | A contour containing trimmed edge segments and fillets. |
Frames(Double, Double, Double)
Get a collection of Transforms which represent frames along this curve.
Declaration
public override Transform[] Frames(double startSetback = 0, double endSetback = 0, double additionalRotation = 0)
Parameters
Type | Name | Description |
---|---|---|
System.Double | startSetback | |
System.Double | endSetback | |
System.Double | additionalRotation | An additional rotation of the frame at each point. |
Returns
Type | Description |
---|---|
Transform[] | A collection of Transforms. |
Overrides
FromAlignedBoundingBox2d(IEnumerable<Vector3>)
Find the minimum-area rotated rectangle containing a set of points, calculated without regard for Z coordinate.
Declaration
public static Polygon FromAlignedBoundingBox2d(IEnumerable<Vector3> points)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<Vector3> | points | The points to contain within the rectangle |
Returns
Type | Description |
---|---|
Polygon | A rectangular polygon that contains all input points |
FromAlignedBoundingBox2d(IEnumerable<Vector3>, Vector3, Double)
Find the rectangle along axis containing a set of points, calculated without regard for Z coordinate, located at the height of points minimum Z coordinate.
Declaration
public static Polygon FromAlignedBoundingBox2d(IEnumerable<Vector3> points, Vector3 axis, double minSideSize = 0.1)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<Vector3> | points | The points to contain within the rectangle. |
Vector3 | axis | The axis along which the rectangle is built. Must be a non-zero vector. |
System.Double | minSideSize | The minimum size of a side of a polygon when all points lie on the same line and polygon cannot be constructed. Must be greater than 0. |
Returns
Type | Description |
---|---|
Polygon |
GetHashCode()
Get the hash code for the polygon.
Declaration
public override int GetHashCode()
Returns
Type | Description |
---|---|
System.Int32 |
Overrides
Intersection(Polygon, Double)
Constructs the Polygon intersections between this Polygon and the supplied Polygon.
Declaration
public IList<Polygon> Intersection(Polygon polygon, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
Polygon | polygon | The intersecting Polygon. |
System.Double | tolerance | An optional tolerance. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IList<Polygon> | Returns a list of Polygons representing the intersection of this Polygon with the supplied Polygon. Returns null if the two Polygons do not intersect. |
Intersection(IList<Polygon>, IList<Polygon>, Double)
Constructs the Polygon intersections between two sets of polygons.
Declaration
public static IList<Polygon> Intersection(IList<Polygon> firstSet, IList<Polygon> secondSet, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IList<Polygon> | firstSet | First set of polygons |
System.Collections.Generic.IList<Polygon> | secondSet | Second set of polygons |
System.Double | tolerance | An optional tolerance. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IList<Polygon> | Returns a list of Polygons representing the intersection of the first set of Polygons with the second set. Returns null if the Polygons do not intersect. |
Intersects(Plane, out List<Vector3>, Boolean, Boolean)
Does this polygon intersect the provided plane?
Declaration
public bool Intersects(Plane plane, out List<Vector3> results, bool distinct = true, bool sort = true)
Parameters
Type | Name | Description |
---|---|---|
Plane | plane | The intersection plane. |
System.Collections.Generic.List<Vector3> | results | A collection of intersection results sorted along the plane. |
System.Boolean | distinct | Should the intersection results that are returned be distinct? |
System.Boolean | sort | Should the intersection results be sorted along the plane? |
Returns
Type | Description |
---|---|
System.Boolean | True if the plane intersects the polygon, otherwise false. |
Intersects(Polygon)
Tests if the supplied Polygon shares one or more areas with this Polygon when compared on a shared plane.
Declaration
public bool Intersects(Polygon polygon)
Parameters
Type | Name | Description |
---|---|---|
Polygon | polygon | The Polygon to compare with this Polygon. |
Returns
Type | Description |
---|---|
System.Boolean | Returns true if the supplied Polygon shares one or more areas with this Polygon when compared on a shared plane. Returns false if the supplied Polygon does not share an area with this Polygon or if the supplied Polygon is null. |
IsAlmostEqualTo(Polygon, Double, Boolean)
Test if this polygon has the same vertex count and shape as another, within tolerance.
Declaration
public bool IsAlmostEqualTo(Polygon other, double tolerance = 1E-05, bool ignoreWinding = false)
Parameters
Type | Name | Description |
---|---|---|
Polygon | other | The other polygon. |
System.Double | tolerance | The optional tolerance value to use. If not supplied, the global tolerance will be used. |
System.Boolean | ignoreWinding | If true, polygons with opposite winding will be considered as equal. |
Returns
Type | Description |
---|---|
System.Boolean |
IsClockWise()
Calculates whether this polygon is configured clockwise. This method only works for 2D polygons. For 3D polygons, you will need to transform your polygon into the XY plane, then run this method on that polygon.
Declaration
public bool IsClockWise()
Returns
Type | Description |
---|---|
System.Boolean | True if this polygon is oriented clockwise. |
L(Double, Double, Double)
Create an L.
Declaration
public static Polygon L(double width, double length, double thickness)
Parameters
Type | Name | Description |
---|---|---|
System.Double | width | The width of the L. |
System.Double | length | The length of the L. |
System.Double | thickness | The thickness of the L. |
Returns
Type | Description |
---|---|
Polygon | An L shaped polygon with the origin at the outer corner of the bend in the L. |
Length()
Calculate the length of the polygon.
Declaration
public override double Length()
Returns
Type | Description |
---|---|
System.Double |
Overrides
Ngon(Int32, Double)
Create an ngon.
Declaration
public static Polygon Ngon(int sides, double radius = 0.5)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | sides | The number of side of the Polygon. |
System.Double | radius | The radius of the circle in which the Ngon is inscribed. |
Returns
Type | Description |
---|---|
Polygon | A Polygon with the specified number of sides. |
Normal()
The normal of this polygon, according to Newell's Method.
Declaration
public Vector3 Normal()
Returns
Type | Description |
---|---|
Vector3 | The unitized sum of the cross products of each pair of edges. |
NormalsAtVertices()
Get the normal of each vertex on the polygon.
Declaration
protected override Vector3[] NormalsAtVertices()
Returns
Type | Description |
---|---|
Vector3[] | A collection of unit vectors, each corresponding to a single vertex. |
Overrides
Remarks
All normals will be the same since polygons are coplanar by definition.
Offset(Double, EndType, Double)
Offset this polygon by the specified amount.
Declaration
public override Polygon[] Offset(double offset, EndType endType = EndType.ClosedPolygon, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
System.Double | offset | The amount to offset. |
EndType | endType | The type of closure used for the offset polygon. |
System.Double | tolerance | An optional tolerance. |
Returns
Type | Description |
---|---|
Polygon[] | A new Polygon offset by offset. |
Overrides
Plane()
Compute the plane of the Polygon.
Declaration
public override Plane Plane()
Returns
Type | Description |
---|---|
Plane | A Plane. |
Overrides
PointInternal()
Find a point that is guaranteed to be internal to the polygon.
Declaration
public Vector3 PointInternal()
Returns
Type | Description |
---|---|
Vector3 |
Project(Plane)
Project this polygon onto the plane.
Declaration
public Polygon Project(Plane plane)
Parameters
Type | Name | Description |
---|---|---|
Plane | plane | The plane of the returned polygon. |
Returns
Type | Description |
---|---|
Polygon |
ProjectAlong(Vector3, Plane)
Project this Polygon onto a Plane along a vector.
Declaration
public Polygon ProjectAlong(Vector3 direction, Plane p)
Parameters
Type | Name | Description |
---|---|---|
Vector3 | direction | The projection vector. |
Plane | p | The Plane onto which to project the Polygon. |
Returns
Type | Description |
---|---|
Polygon | A Polygon projected onto the Plane. |
Rectangle(Vector3, Vector3, Plane, Nullable<Vector3>)
Create a rectangle.
Declaration
public static Polygon Rectangle(Vector3 min, Vector3 max, Plane plane, Vector3? alignment = null)
Parameters
Type | Name | Description |
---|---|---|
Vector3 | min | The minimum coordinate. |
Vector3 | max | The maximum coordinate. |
Plane | plane | The plane to project the rectangle on. |
System.Nullable<Vector3> | alignment | The alignment reference to construct the rectangle from. |
Returns
Type | Description |
---|---|
Polygon | A rectangular Polygon with its lower left corner projected from min and its upper right corner projected from max onto a plane with a sided alignment. |
Rectangle(Vector3, Vector3, Transform)
Create a rectangle.
Declaration
public static Polygon Rectangle(Vector3 min, Vector3 max, Transform transform = null)
Parameters
Type | Name | Description |
---|---|---|
Vector3 | min | The minimum coordinate. |
Vector3 | max | The maximum coordinate. |
Transform | transform | The transform reference to construct the rectangle from. |
Returns
Type | Description |
---|---|
Polygon | A rectangular Polygon with its lower left corner projected from min and its upper right corner projected from max onto a transform. |
Rectangle(Double, Double, Plane)
Create a rectangle.
Declaration
public static Polygon Rectangle(double width, double height, Plane plane = null)
Parameters
Type | Name | Description |
---|---|---|
System.Double | width | The width of the rectangle. |
System.Double | height | The height of the rectangle. |
Plane | plane | The plane to draw the rectangle on. |
Returns
Type | Description |
---|---|
Polygon | A rectangular Polygon centered around origin. |
RemoveVerticesNearCurve(Curve, out List<Vector3>, Double)
Trim vertices from a polygon that lie near a given curve.
Declaration
public Polygon RemoveVerticesNearCurve(Curve curve, out List<Vector3> removed, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
Curve | curve | The curve used to trim the polygon |
System.Collections.Generic.List<Vector3> | removed | The vertices that were removed. |
System.Double | tolerance | Optional tolerance value. |
Returns
Type | Description |
---|---|
Polygon |
Reversed()
Reverse the direction of a polygon.
Declaration
public Polygon Reversed()
Returns
Type | Description |
---|---|
Polygon | Returns a new Polygon whose vertices are reversed. |
Segments()
Get a collection a line segments which connect the vertices of this polyline.
Declaration
public override Line[] Segments()
Returns
Type | Description |
---|---|
Line[] | A collection of Lines. |
Overrides
Split(Polyline[])
Split this polygon with one or more open polylines.
Declaration
public List<Polygon> Split(params Polyline[] polylines)
Parameters
Type | Name | Description |
---|---|---|
Polyline[] | polylines | The polylines with which to split. |
Returns
Type | Description |
---|---|
System.Collections.Generic.List<Polygon> |
Split(IEnumerable<Polyline>)
Split this polygon with a collection of open polylines.
Declaration
public List<Polygon> Split(IEnumerable<Polyline> polylines)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<Polyline> | polylines | The polylines with which to split. |
Returns
Type | Description |
---|---|
System.Collections.Generic.List<Polygon> |
Split(IList<Vector3>)
Insert a point into the polygon if it lies along one of the polyline's segments.
Declaration
public override void Split(IList<Vector3> points)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IList<Vector3> | points | The points at which to split the polygon. |
Overrides
Star(Double, Double, Int32)
Create a star.
Declaration
public static Polygon Star(double outerRadius, double innerRadius, int points)
Parameters
Type | Name | Description |
---|---|---|
System.Double | outerRadius | The outer radius. |
System.Double | innerRadius | The inner radius. |
System.Int32 | points | The number of points. |
Returns
Type | Description |
---|---|
Polygon | A star shaped polygon with the specified number of points along the outer radius and their compliment along the inner radius. |
ToString()
The string representation of the Polygon.
Declaration
public override string ToString()
Returns
Type | Description |
---|---|
System.String | A string containing the string representations of this Polygon's vertices. |
Overrides
ToTransform()
Construct a transform in the plane of this polygon, with its Z axis along the polygon's normal.
Declaration
public Transform ToTransform()
Returns
Type | Description |
---|---|
Transform |
Touches(Polygon, Double)
Tests if at least one point of an edge of the supplied Polygon is shared with an edge of this Polygon without the Polygons interesecting when compared on a shared plane.
Declaration
public bool Touches(Polygon polygon, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
Polygon | polygon | The Polygon to compare to this Polygon. |
System.Double | tolerance | An optional tolerance. |
Returns
Type | Description |
---|---|
System.Boolean | Returns true if the supplied Polygon shares at least one edge point with this Polygon without the Polygons intersecting when compared on a shared plane. Returns false if the Polygons intersect, are disjoint, or if the supplied Polygon is null. |
Touches(Vector3, Double)
Tests if the supplied Vector3 is coincident with an edge of this Polygon when compared on a shared plane.
Declaration
public bool Touches(Vector3 vector, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
Vector3 | vector | The Vector3 to compare to this Polygon. |
System.Double | tolerance | An optional tolerance. |
Returns
Type | Description |
---|---|
System.Boolean | Returns true if the supplied Vector3 coincides with an edge of this Polygon when compared on a shared plane. Returns false if the supplied Vector3 is not coincident with an edge of this Polygon, or if the supplied Vector3 is null. |
Transform(Transform)
Transform this polygon in place.
Declaration
public void Transform(Transform t)
Parameters
Type | Name | Description |
---|---|---|
Transform | t | The transform. |
Transformed(Transform)
Create a transformed copy of this curve. Use of non-affine transforms (i.e. scale) will result in unpredictable results for curve methods such as Length().
Declaration
public override Curve Transformed(Transform transform)
Parameters
Type | Name | Description |
---|---|---|
Transform | transform | The transform to apply. |
Returns
Type | Description |
---|---|
Curve |
Overrides
TransformedPolygon(Transform)
Construct a transformed copy of this Polygon.
Declaration
public Polygon TransformedPolygon(Transform transform)
Parameters
Type | Name | Description |
---|---|---|
Transform | transform | The transform to apply. |
Returns
Type | Description |
---|---|
Polygon |
TransformSegment(Transform, Int32)
Transform a specified segment of this polygon in place.
Declaration
public void TransformSegment(Transform t, int i)
Parameters
Type | Name | Description |
---|---|---|
Transform | t | The transform. If it is not within the polygon plane, then an exception will be thrown. |
System.Int32 | i | The segment to transform. If it does not exist, then no work will be done. |
Trimmed(Plane, Boolean)
Trim the polygon with a plane. Everything on the "back" side of the plane will be trimmed.
Declaration
public List<Polygon> Trimmed(Plane plane, bool flip = false)
Parameters
Type | Name | Description |
---|---|---|
Plane | plane | The trimming plane. |
System.Boolean | flip | Should the plane be flipped? |
Returns
Type | Description |
---|---|
System.Collections.Generic.List<Polygon> | A collection of new polygons, trimmed by the plane, or null if no trimming occurred. |
TrimmedTo(IList<Polygon>, LocalClassification)
Trim the polygon with a collection of polygons that intersect it in 3d. Portions of the intersected polygon on the "outside" (normal-facing side) of the trimming polygons will remain. Portions inside the trimming polygons will be discarded.
Declaration
public List<Polygon> TrimmedTo(IList<Polygon> polygons, LocalClassification inOut = LocalClassification.Outside)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IList<Polygon> | polygons | The trimming polygons. |
LocalClassification | inOut | A classification indicating which trim area should be returned. |
Returns
Type | Description |
---|---|
System.Collections.Generic.List<Polygon> | A collection of polygons resulting from the trim or null if no trim occurred. |
TrimmedTo(IList<Polygon>, out List<Vector3>, out List<(Vector3 from, Vector3 to, Nullable<Int32> index)>, LocalClassification)
Trim the polygon with a collection of polygons that intersect it in 3d. Portions of the intersected polygon on the "outside" (normal-facing side) of the trimming polygons will remain. Portions inside the trimming polygons will be discarded.
Declaration
public List<Polygon> TrimmedTo(IList<Polygon> polygons, out List<Vector3> intersections, out List<(Vector3 from, Vector3 to, int? index)> trimEdges, LocalClassification inOut = LocalClassification.Outside)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IList<Polygon> | polygons | The trimming polygons. |
System.Collections.Generic.List<Vector3> | intersections | A collection of intersection locations. |
System.Collections.Generic.List<System.ValueTuple<Vector3, Vector3, System.Nullable<System.Int32>>> | trimEdges | A collection of vertex pairs representing all edges in the timming graph. |
LocalClassification | inOut | A classification indicating which trim area should be returned. |
Returns
Type | Description |
---|---|
System.Collections.Generic.List<Polygon> | A collection of polygons resulting from the trim or null if no trim occurred. |
U(Double, Double, Double)
Create a U.
Declaration
public static Polygon U(double width, double length, double thickness)
Parameters
Type | Name | Description |
---|---|---|
System.Double | width | The width of the U. |
System.Double | length | The length of the U. |
System.Double | thickness | The thickness of the U. |
Returns
Type | Description |
---|---|
Polygon | A U shaped polygon with the origin at the center of the inside bend of the U. |
Union(Polygon, Double)
Constructs the geometric union between this Polygon and the supplied Polygon.
Declaration
public Polygon Union(Polygon polygon, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
Polygon | polygon | The Polygon to be combined with this Polygon. |
System.Double | tolerance | An optional tolerance. |
Returns
Type | Description |
---|---|
Polygon | Returns a single Polygon from a successful union. Returns null if a union cannot be performed on the two Polygons. |
Union(Polygon[])
Constructs the geometric union between this Polygon and one or more supplied polygons, using the default tolerance.
Declaration
public Polygon Union(params Polygon[] polygons)
Parameters
Type | Name | Description |
---|---|---|
Polygon[] | polygons | The Polygons to be combined with this Polygon. |
Returns
Type | Description |
---|---|
Polygon | Returns a single Polygon from a successful union. Returns null if a union cannot be performed on the complete list of Polygons. |
Union(IList<Polygon>, IList<Polygon>, Double)
Constructs the geometric union of two sets of polygons.
Declaration
[Obsolete("Please use UnionAll, which takes a single list of polygons.")]
public static IList<Polygon> Union(IList<Polygon> firstSet, IList<Polygon> secondSet, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IList<Polygon> | firstSet | First set of polygons |
System.Collections.Generic.IList<Polygon> | secondSet | Second set of polygons |
System.Double | tolerance | An optional tolerance. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IList<Polygon> | Returns a list of Polygons representing the union of both sets of polygons. |
Union(IList<Polygon>, Double)
Constructs the geometric union between this Polygon and the supplied list of Polygons.
Declaration
public Polygon Union(IList<Polygon> polygons, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IList<Polygon> | polygons | The list of Polygons to be combined with this Polygon. |
System.Double | tolerance | An optional tolerance. |
Returns
Type | Description |
---|---|
Polygon | Returns a single Polygon from a successful union. Returns null if a union cannot be performed on the complete list of Polygons. |
UnionAll(Polygon[])
Constructs the geometric union of a set of polygons, using default tolerance.
Declaration
public static IList<Polygon> UnionAll(params Polygon[] polygons)
Parameters
Type | Name | Description |
---|---|---|
Polygon[] | polygons | The polygons to union |
Returns
Type | Description |
---|---|
System.Collections.Generic.IList<Polygon> | Returns a list of Polygons representing the union of all polygons. |
UnionAll(IList<Polygon>, Double)
Constructs the geometric union of a set of polygons.
Declaration
public static IList<Polygon> UnionAll(IList<Polygon> polygons, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IList<Polygon> | polygons | The polygons to union |
System.Double | tolerance | An optional tolerance. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IList<Polygon> | Returns a list of Polygons representing the union of all polygons. |
ValidateVertices()
Validate that this Polygon's vertices are coplanar, clean up any duplicate vertices, and fix any overlapping edges.
Declaration
protected override void ValidateVertices()
Overrides
XOR(Polygon, Double)
Returns Polygons representing the symmetric difference between this Polygon and the supplied Polygon.
Declaration
public IList<Polygon> XOR(Polygon polygon, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
Polygon | polygon | The intersecting polygon. |
System.Double | tolerance | An optional tolerance. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IList<Polygon> | Returns a list of Polygons representing the symmetric difference of this Polygon and the supplied Polygon. Returns a representation of this Polygon and the supplied Polygon if the Polygons do not intersect. |
XOR(IList<Polygon>, IList<Polygon>, Double)
Returns Polygons representing the symmetric difference between two sets of polygons.
Declaration
public static IList<Polygon> XOR(IList<Polygon> firstSet, IList<Polygon> secondSet, double tolerance = 1E-05)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IList<Polygon> | firstSet | First set of polygons |
System.Collections.Generic.IList<Polygon> | secondSet | Second set of polygons |
System.Double | tolerance | An optional tolerance. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IList<Polygon> | Returns a list of Polygons representing the symmetric difference of these two sets of polygons. Returns a representation of all polygons if they do not intersect. |
Operators
Implicit(Polygon to Element)
Implicitly convert a Polygon to a ModelCurve Element.
Declaration
public static implicit operator Element(Polygon c)
Parameters
Type | Name | Description |
---|---|---|
Polygon | c | The curve to convert. |
Returns
Type | Description |
---|---|
Element |
Implicit(Polygon to Profile)
Implicitly convert a polygon to a profile.
Declaration
public static implicit operator Profile(Polygon p)
Parameters
Type | Name | Description |
---|---|---|
Polygon | p | The polygon to convert. |
Returns
Type | Description |
---|---|
Profile |