Represents an ordered set of points connected by linear segments.
Polylines are closed if start and end points coincide.
Constructors
Initializes a new polyline from a collection of points.
Parameters:
| collection (IEnumerable<Point3d>) | Points to copy into the local vertex array. |
Properties
BoundingBox
Even though this is a property, it is not a "fast" calculation. Every point is evaluated in order to get the bounding box of the list.
Capacity
Gets or sets the total number of elements the internal data structure can hold without resizing.
First
public T First { get; set; }
Gets or sets the first item in the list. This is synonymous to calling List[0].
Gets a value that indicates whether this polyline is valid.
Valid polylines have at least one segment, no Invalid points and no zero length segments.
Closed polylines with only two segments are also not considered valid.
Last
public T Last { get; set; }
Gets or sets the last item in the list. This is synonymous to calling List[Count-1].
NullCount
Gets the number of null references (Nothing in Visual Basic) in this list. If T is a ValueType, this property always return zero.
Gets the number of segments for this polyline.
Indexers
Parameters:
| index (int) | The zero-based index of the element to get or set. |
Returns: The element at the specified index.
Methods
Add
Adds a Point3d to the end of the list with given x,y,z coordinates.
Add
public void Add(T item)
Adds an object to the end of the List.
Parameters:
| item (T) | Item to append. |
AddRange
Adds the elements of the specified collection to the end of the List.
Parameters:
| collection (IEnumerable) | The collection whose elements should be added to the end of the List. The collection itself cannot be a null reference (Nothing in Visual Basic), but it can contain elements that are a null reference (Nothing in Visual Basic). Objects in collection which cannot be represented as T will throw exceptions. |
AddRange
Adds the elements of the specified collection to the end of the List.
Parameters:
| collection (IEnumerable<T>) | The collection whose elements should be added to the end of the List. The collection itself cannot be a null reference (Nothing in Visual Basic), but it can contain elements that are a null reference (Nothing in Visual Basic), if type T is a reference type. |
Returns: A wrapper.
BinarySearch
Searches the entire sorted List for an element using the specified comparer and returns the zero-based index of the element.
Parameters:
| index (int) | The zero-based starting index of the range to search. |
| count (int) | The length of the range to search. |
| item (T) | The object to locate. The value can be a null reference (Nothing in Visual Basic) for reference types. |
| comparer (IComparer<T>) | The IComparer(T) implementation to use when comparing elements. Or a null reference (Nothing in Visual Basic) to use the default comparer Comparer(T)::Default. |
Returns: The zero-based index of item in the sorted List, if item is found; otherwise, a negative number that is the bitwise complement of the index of the next element that is larger than item or, if there is no larger element, the bitwise complement of Count.
BinarySearch
Searches the entire sorted List for an element using the specified comparer and returns the zero-based index of the element.
Parameters:
| item (T) | The object to locate. The value can be a null reference (Nothing in Visual Basic) for reference types. |
| comparer (IComparer<T>) | The IComparer(T) implementation to use when comparing elements. Or a null reference (Nothing in Visual Basic) to use the default comparer Comparer(T)::Default. |
Returns: The zero-based index of item in the sorted List, if item is found; otherwise, a negative number that is the bitwise complement of the index of the next element that is larger than item or, if there is no larger element, the bitwise complement of Count.
BinarySearch
Searches the entire sorted List for an element using the default comparer and returns the zero-based index of the element.
Parameters:
| item (T) | The object to locate. The value can be a null reference (Nothing in Visual Basic) for reference types. |
Returns: The zero-based index of item in the sorted List, if item is found; otherwise, a negative number that is the bitwise complement of the index of the next element that is larger than item or, if there is no larger element, the bitwise complement of Count.
Breaks this polyline into sections at sharp kinks. Closed polylines will also be broken at the first and last vertex.
Parameters:
| angle (double) | Angle (in radians) between adjacent segments for a break to occur. |
Returns: An array of polyline segments, or null on error.
Compute the center point of the polyline as the weighted average of all segments.
Returns: The weighted average of all segments.
Clear
public void Clear()
Removes all elements from the List.
ClosestIndex
Finds the index of the point that is closest to a test point in this list.
Parameters:
| testPoint (Point3d) | point to compare against. |
Returns: index of closest point in the list on success. -1 on error.
Gets the parameter along the polyline which is closest to a test-point.
Parameters:
| testPoint (Point3d) | Point to approximate. |
Returns: The parameter along the polyline closest to testPoint.
Gets the point on the polyline which is closest to a test-point.
Parameters:
| testPoint (Point3d) | Point to approximate. |
Returns: The point on the polyline closest to testPoint.
Collapses all segments until none are shorter than tolerance. This function is significantly slower than DeleteShortSegments, since it recursively operates on the shortest segment. When a segment is collapsed the end-points are placed in the center of the segment.
Parameters:
| tolerance (double) | Tolerance to use during collapsing. |
Returns: The number of segments that were collapsed.
Parameters:
| item (T) | The object to locate in the List. The value can be a null reference (Nothing in Visual Basic) for reference types. |
Returns: true if item is found in the List; otherwise, false.
ConvertAll<TOutput>
Aggregates all results of a conversion function over this table into a new list.
Parameters:
| converter (Converter<T, TOutput>) | A conversion function that can transform from T to TOutput. |
Returns: The new list.
CopyTo
Copies a range of elements from the List to a compatible one-dimensional array, starting at the specified index of the target array.
Parameters:
| index (int) | The zero-based index in the source List at which copying begins. |
| array (T[]) | The one-dimensional Array that is the destination of the elements copied from List. The Array must have zero-based indexing. |
| arrayIndex (int) | The zero-based index in array at which copying begins. |
| count (int) | The number of elements to copy. |
CopyTo
Copies the entire List to a compatible one-dimensional array, starting at the specified index of the target array.
Parameters:
| array (T[]) | The one-dimensional Array that is the destination of the elements copied from List. The Array must have zero-based indexing. |
| arrayIndex (int) | The zero-based index in array at which copying begins. |
CopyTo
public void CopyTo(T[] array)
Copies the entire List to a compatible one-dimensional array, starting at the beginning of the target array.
Parameters:
| array (T[]) | The one-dimensional Array that is the destination of the elements copied from List. The Array must have zero-based indexing. |
public static Polyline[] CreateByJoiningLines(IEnumerable<Line> lines, double tolerance, bool splitAtIntersections)
Creates polylines by joining lines.
Parameters:
| lines (IEnumerable<Line>) | An array, a list or any enumerable of lines. |
| tolerance (double) | The threshold distance for joining lines. |
| splitAtIntersections (bool) | If true, splits lines at intersections. |
Create a regular polygon circumscribe about a circle. The midpoints of the polygon's edges will be tangent to the circle.
Create a regular polygon inscribed in a circle. The vertices of the polygon will be on the circle.
Create a regular star polygon. The star begins at circle.PointAt(0) and the vertices alternate between being on circle and begin on a concentric circle of other_radius.
Removes all points that are closer than tolerance to the previous point.
Start and end points are left intact.
Parameters:
| tolerance (double) | Vertices closer together than tolerance will be removed. |
Returns: Number of points (and segments) removed.
Returns a deep copy of this polyline instance.
Returns: The duplicated polyline.
Equals
Overrides the default object equality to compare lists by value.
Parameters:
| other (Point3dList) |
Returns: True is objects are exactly equal in value.
Exists
Determines whether the List contains elements that match the conditions defined by the specified predicate.
Parameters:
| match (Predicate<T>) | The Predicate(T) delegate that defines the conditions of the elements to search for. |
Returns: true if the List contains one or more elements that match the conditions defined by the specified predicate; otherwise, false.
Find
Searches for an element that matches the conditions defined by the specified predicate, and returns the first occurrence within the entire List.
Parameters:
| match (Predicate<T>) | The Predicate(T) delegate that defines the conditions of the element to search for. |
Returns: The first element that matches the conditions defined by the specified predicate, if found; otherwise, the default value for type T.
FindAll
Retrieves all the elements that match the conditions defined by the specified predicate.
Parameters:
| match (Predicate<T>) | The Predicate(T) delegate that defines the conditions of the elements to search for. |
Returns: A ON_List(T) containing all the elements that match the conditions defined by the specified predicate, if found; otherwise, an empty ON_List(T).
FindIndex
Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the range of elements in the List that extends from the specified index to the last element.
Parameters:
| startIndex (int) | The zero-based starting index of the search. |
| count (int) | The number of elements in the section to search. |
| match (Predicate<T>) | The Predicate(T) delegate that defines the conditions of the element to search for. |
Returns: The zero-based index of the first occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.
FindIndex
Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the entire List.
Parameters:
| startIndex (int) | The zero-based starting index of the search. |
| match (Predicate<T>) | The Predicate(T) delegate that defines the conditions of the element to search for. |
Returns: The zero-based index of the first occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.
FindIndex
Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the entire List.
Parameters:
| match (Predicate<T>) | The Predicate(T) delegate that defines the conditions of the element to search for. |
Returns: The zero-based index of the first occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.
FindLast
Searches for an element that matches the conditions defined by the specified predicate, and returns the last occurrence within the entire List.
Parameters:
| match (Predicate<T>) | The Predicate(T) delegate that defines the conditions of the element to search for. |
Returns: The last element that matches the conditions defined by the specified predicate, if found; otherwise, the default value for type T.
FindLastIndex
Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the entire List.
Parameters:
| startIndex (int) | The zero-based starting index of the backward search. |
| count (int) | The number of elements in the section to search. |
| match (Predicate<T>) | The Predicate(T) delegate that defines the conditions of the element to search for. |
Returns: The zero-based index of the last occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.
FindLastIndex
Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the entire List.
Parameters:
| startIndex (int) | The zero-based starting index of the backward search. |
| match (Predicate<T>) | The Predicate(T) delegate that defines the conditions of the element to search for. |
Returns: The zero-based index of the last occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.
FindLastIndex
Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the entire List.
Parameters:
| match (Predicate<T>) | The Predicate(T) delegate that defines the conditions of the element to search for. |
Returns: The zero-based index of the last occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.
ForEach
Performs the specified action on each element of the List.
Parameters:
| action (Action<T>) | The Action(T) delegate to perform on each element of the List. |
GetEnumerator
Constructs an enumerator that is capable of iterating over all items in this list.
Returns: The new enumerator.
Returns: An int that serves as an hash code. This is currently a XOR of all doubles, XORed in line.
Overrides: Object.GetHashCode
GetRange
Constructs a shallow copy of a range of elements in the source List.
Constructs an array of line segments that make up the entire polyline.
Returns: An array of line segments or null if the polyline contains fewer than 2 points.
IndexOf
Searches for the specified object and returns the zero-based index of the first occurrence within the range of elements in the List that starts at the specified index and contains the specified number of elements.
Parameters:
| item (T) | The object to locate in the List. The value can be a null reference (Nothing in Visual Basic) for reference types. |
| index (int) | The zero-based starting index of the search. |
| count (int) | The number of elements in the section to search. |
Returns: The zero-based index of the first occurrence of item within the entire List, if found; otherwise, -1.
IndexOf
Searches for the specified object and returns the zero-based index of the first occurrence within the range of elements in the List that extends from the specified index to the last element.
Parameters:
| item (T) | The object to locate in the List. The value can be a null reference (Nothing in Visual Basic) for reference types. |
| index (int) | The zero-based starting index of the search. |
Returns: The zero-based index of the first occurrence of item within the entire List, if found; otherwise, -1.
IndexOf
Searches for the specified object and returns the zero-based index of the first occurrence within the entire List.
Parameters:
| item (T) | The object to locate in the List. The value can be a null reference (Nothing in Visual Basic) for reference types. |
Returns: The zero-based index of the first occurrence of item within the entire List, if found; otherwise, -1.
Parameters:
| index (int) | The zero-based index at which item should be inserted. |
| item (T) | The object to insert. The value can be a null reference (Nothing in Visual Basic) for reference types. |
InsertRange
Inserts the elements of a collection into the List at the specified index.
Parameters:
| index (int) | The zero-based index at which the new elements should be inserted. |
| collection (IEnumerable<T>) | The collection whose elements should be inserted into the List. The collection itself cannot be a null reference (Nothing in Visual Basic), but it can contain elements that are a null reference (Nothing in Visual Basic), if type T is a reference type. |
Test a polyline to see if it is closed.
Parameters:
| tolerance (double) | The tolerance. |
Returns: Returns true if polyline has 4 or more points, the distance between the start and end points is <= tolerance, and there is a point in the polyline whose distance from the start and end points is > tolerance.
Determines if a polyline is convex.
Parameters:
| strictlyConvex (bool) | If false, collinear segments are considered convex. |
Returns: True if the polyline is a closed, convex loop.
LastIndexOf
Searches for the specified object and returns the zero-based index of the last occurrence within the range of elements in the List that contains the specified number of elements and ends at the specified index.
Parameters:
| item (T) | The object to locate in the List. The value can be a null reference (Nothing in Visual Basic) for reference types. |
| index (int) | The zero-based starting index of the backward search. |
| count (int) | The number of elements in the section to search. |
Returns: The zero-based index of the last occurrence of item within the entire the List, if found; otherwise, -1.
LastIndexOf
Searches for the specified object and returns the zero-based index of the last occurrence within the range of elements in the List that extends from the first element to the specified index.
Parameters:
| item (T) | The object to locate in the List. The value can be a null reference (Nothing in Visual Basic) for reference types. |
| index (int) | The zero-based starting index of the backward search. |
Returns: The zero-based index of the last occurrence of item within the entire the List, if found; otherwise, -1.
LastIndexOf
Searches for the specified object and returns the zero-based index of the last occurrence within the entire List.
Parameters:
| item (T) | The object to locate in the List. The value can be a null reference (Nothing in Visual Basic) for reference types. |
Returns: The zero-based index of the last occurrence of item within the entire the List, if found; otherwise, -1.
Merge co-linear consecutive segments in a polyline. This method will automatically remove any zero-length segments as well.
Gets the point on the polyline at the given parameter. The integer part of the parameter indicates the index of the segment.
Parameters:
| t (double) | Polyline parameter. |
Returns: The point on the polyline at t.
Constructs a reduction of this polyline by recursively removing the least significant segments.
Parameters:
| tolerance (double) | Tolerance for reduction. Whenever a vertex of the polyline is more significant than tolerance, it will be included in the reduction. |
Returns: The number of vertices that disappeared due to reduction.
RemapIndex
Remap an index in the infinite range onto the List index range.
Parameters:
| index (int) | Index to remap. |
Returns: Remapped index.
Parameters:
| item (T) | The object to remove from the List. The value can be a null reference (Nothing in Visual Basic) for reference types. |
Returns: true if item is successfully removed; otherwise, false. This method also returns false if item was not found in the List.
RemoveAll
Removes the all the elements that match the conditions defined by the specified predicate.
Parameters:
| match (Predicate<T>) | The Predicate(T) delegate that defines the conditions of the elements to remove. |
Returns: The number of elements removed from the List.
Parameters:
| index (int) | The zero-based index of the element to remove. |
Removes one copy of a point that is equal to the previous or later point, by an absolute tolerance factor.
Parameters:
| tolerance (double) |
RemoveNulls
Removes all elements from the List that are null references (Nothing in Visual Basic). This function will not do anything if T is not a Reference type.
Returns: The number of nulls removed from the List.
Reverse
public void Reverse()
Reverses the order of the elements in the entire List.
Reverse
Reverses the order of the elements in the specified range.
Gets the line segment at the given index.
Parameters:
| index (int) | Index of segment to retrieve. |
Returns: Line segment at index or Line.Unset on failure.
Parameters:
| xValue (double) |
Parameters:
| yValue (double) |
Parameters:
| zValue (double) |
Smoothen the polyline segments by averaging adjacent vertices. Smoothing requires a polyline with exclusively valid vertices.
Parameters:
| amount (double) | Amount to smooth. Zero equals no smoothing, one equals complete smoothing. |
Returns: true on success, false on failure.
Sort
public void Sort()
Sorts the elements in the entire List using the default comparer.
Sort
Sorts the elements in the entire list using the specified comparer.
Parameters:
| comparison (Comparison<T>) | The System.Comparison(T) to use when comparing elements. |
Sort
Sort this list based on a list of numeric keys of equal length. The keys array will not be altered.
Remarks: This function does not exist on the DotNET List class. David thought it was a good idea.
Parameters:
| keys (double[]) | Numeric keys to sort with. |
Sort
Sorts the elements in the entire list using the specified System.Comparison(T)
Parameters:
| comparer (IComparer<T>) | The IComparer(T) implementation to use when comparing elements, or a null reference (Nothing in Visual Basic) to use the default comparer Comparer(T).Default. |
Sort
Sorts the elements in a range of elements in list using the specified comparer.
Sort
Sort this list based on a list of numeric keys of equal length. The keys array will not be altered.
Remarks: This function does not exist on the DotNET List class. David thought it was a good idea.
Parameters:
| keys (int[]) | Numeric keys to sort with. |
Gets the unit tangent vector along the polyline at the given parameter. The integer part of the parameter indicates the index of the segment.
Parameters:
| t (double) | Polyline parameter. |
Returns: The tangent along the polyline at t.
ToArray
public T[] ToArray()
Constructs an array that contains all items in this list.
Returns: An array containing all items in this list.
Constructs a nurbs curve representation of this polyline.
Returns: A Nurbs curve shaped like this polyline or null on failure.
Constructs a polyline curve representation of this polyline.
Returns: A curve shaped like this polyline or null on failure.
Transform
public void Transform(Transform xform)
Applies a transform to all the points in the list.
Parameters:
| xform (Transform) | Transform to apply. |
Attempts to create a list of triangles which represent a triangulation of a closed polyline
Constructs a polyline out of a parameter sub-domain in this curve.
Parameters:
| domain (Interval) | The sub-domain of the polyline. The integer part of the domain parameters indicate the index of the segment. |
Returns: The polyline as defined by the sub-domain, or null on failure.
TrimExcess
public void TrimExcess()
Sets the capacity to the actual number of elements in the List, if that number is less than a threshold value.
Remarks: This function differs from the DotNET implementation of List<T> since that one only trims the excess if the excess exceeds 10% of the list length.
TrueForAll
Determines whether every element in the List matches the conditions defined by the specified predicate.
Parameters:
| match (Predicate<T>) | The Predicate(T) delegate that defines the conditions to check against the elements. |
Returns: true if every element in the List matches the conditions defined by the specified predicate; otherwise, false. If the list has no elements, the return value is true.