Show / Hide Table of Contents

    Class IndexedPolycurve

    A curve composed of a collection of line and arc segments. Parameterization of the curve is 0->n where n is the number of curves.

    Inheritance
    System.Object
    Curve
    BoundedCurve
    IndexedPolycurve
    Polyline
    Implements
    ICurve
    ITransformable<Curve>
    IBoundedCurve
    System.Collections.Generic.IEnumerable<BoundedCurve>
    System.Collections.IEnumerable
    System.IEquatable<IndexedPolycurve>
    Inherited Members
    BoundedCurve.DefaultMinimumChordLength
    BoundedCurve.Mid()
    BoundedCurve.IsClosedForRendering
    BoundedCurve.Frames(Double, Double, Double)
    BoundedCurve.ToPolyline(Int32)
    BoundedCurve.PointAtNormalized(Double)
    BoundedCurve.TransformAtNormalized(Double)
    System.Object.Equals(System.Object)
    System.Object.Equals(System.Object, System.Object)
    System.Object.GetHashCode()
    System.Object.GetType()
    System.Object.MemberwiseClone()
    System.Object.ReferenceEquals(System.Object, System.Object)
    Namespace: Elements.Geometry
    Assembly: Hypar.Elements.dll
    Syntax
    [JsonObject]
    public class IndexedPolycurve : BoundedCurve, ICurve, ITransformable<Curve>, IBoundedCurve, IEnumerable<BoundedCurve>, IEnumerable, IEquatable<IndexedPolycurve>

    Constructors

    IndexedPolycurve()

    Create an indexed polycurve.

    Declaration
    public IndexedPolycurve()

    IndexedPolycurve(IList<Vector3>, IList<IList<Int32>>)

    Create an indexed polycurve.

    Declaration
    [JsonConstructor]
    public IndexedPolycurve(IList<Vector3> vertices, IList<IList<int>> curveIndices)
    Parameters
    Type Name Description
    System.Collections.Generic.IList<Vector3> vertices

    A collection of vertices.

    System.Collections.Generic.IList<System.Collections.Generic.IList<System.Int32>> curveIndices

    A collection of collections of indices.

    IndexedPolycurve(IList<Vector3>, IList<IList<Int32>>, Transform, Boolean)

    Create an indexed polycurve.

    Declaration
    public IndexedPolycurve(IList<Vector3> vertices, IList<IList<int>> curveIndices = null, Transform transform = null, bool disableValidation = false)
    Parameters
    Type Name Description
    System.Collections.Generic.IList<Vector3> vertices

    A collection of vertices.

    System.Collections.Generic.IList<System.Collections.Generic.IList<System.Int32>> curveIndices

    A collection of collections of indices.

    Transform transform

    An optional transform to apply to each vertex.

    System.Boolean disableValidation

    IndexedPolycurve(List<BoundedCurve>, Transform)

    Create an indexed polycurve.

    Declaration
    public IndexedPolycurve(List<BoundedCurve> curves, Transform transform = null)
    Parameters
    Type Name Description
    System.Collections.Generic.List<BoundedCurve> curves

    A collection of bounded curves.

    Transform transform

    An optional transform to apply to the vertices.

    Properties

    CurveIndices

    An optional collection of collections of indices of polycurve segments. Line segments are represented with two indices. Arc segments are represented with three indices.

    Declaration
    public IList<IList<int>> CurveIndices { get; set; }
    Property Value
    Type Description
    System.Collections.Generic.IList<System.Collections.Generic.IList<System.Int32>>

    Domain

    The domain of the curve.

    Declaration
    [JsonIgnore]
    public override Domain1d Domain { get; }
    Property Value
    Type Description
    Domain1d
    Overrides
    BoundedCurve.Domain

    End

    The end of the polycurve.

    Declaration
    [JsonIgnore]
    public override Vector3 End { get; }
    Property Value
    Type Description
    Vector3
    Overrides
    BoundedCurve.End

    Start

    The start of the polycurve.

    Declaration
    [JsonIgnore]
    public override Vector3 Start { get; }
    Property Value
    Type Description
    Vector3
    Overrides
    BoundedCurve.Start

    Vertices

    The vertices of the polygon.

    Declaration
    [JsonProperty("Vertices", Required = Required.Always)]
    [Required]
    [MinLength(2)]
    public IList<Vector3> Vertices { get; set; }
    Property Value
    Type Description
    System.Collections.Generic.IList<Vector3>

    Methods

    ArcLength(Double, Double)

    Calculate the length of the polycurve between two parameters.

    Declaration
    public override double ArcLength(double start, double end)
    Parameters
    Type Name Description
    System.Double start
    System.Double end
    Returns
    Type Description
    System.Double
    Overrides
    BoundedCurve.ArcLength(Double, Double)

    Bounds()

    Get the bounding box for this curve.

    Declaration
    public override BBox3 Bounds()
    Returns
    Type Description
    BBox3
    Overrides
    BoundedCurve.Bounds()

    CheckCoincidenceAndThrow(IList<Vector3>)

    Check for coincident vertices in the supplied vertex collection.

    Declaration
    protected void CheckCoincidenceAndThrow(IList<Vector3> vertices)
    Parameters
    Type Name Description
    System.Collections.Generic.IList<Vector3> vertices

    Equals(IndexedPolycurve)

    Does this indexed polycurve equal the provided indexed polycurve?

    Declaration
    public bool Equals(IndexedPolycurve other)
    Parameters
    Type Name Description
    IndexedPolycurve other
    Returns
    Type Description
    System.Boolean

    True if the two curves are equal, otherwise false.

    GetEnumerator()

    Get the enumerator for this indexed polycurve.

    Declaration
    public IEnumerator<BoundedCurve> GetEnumerator()
    Returns
    Type Description
    System.Collections.Generic.IEnumerator<BoundedCurve>

    An enumerator of bounded curves.

    GetSubdivisionParameters(Double, Double)

    Get parameters to be used to find points along the curve for visualization.

    Declaration
    public override double[] GetSubdivisionParameters(double startSetbackDistance = 0, double endSetbackDistance = 0)
    Parameters
    Type Name Description
    System.Double startSetbackDistance

    An optional setback from the start of the curve.

    System.Double endSetbackDistance

    An optional setback from the end of the curve.

    Returns
    Type Description
    System.Double[]

    A collection of parameter values.

    Overrides
    BoundedCurve.GetSubdivisionParameters(Double, Double)

    Length()

    Calculate the length of the indexed polycurve.

    Declaration
    public override double Length()
    Returns
    Type Description
    System.Double
    Overrides
    BoundedCurve.Length()

    ParameterAtDistanceFromParameter(Double, Double)

    Get the parameter at a distance from the start parameter along the curve.

    Declaration
    public override double ParameterAtDistanceFromParameter(double distance, double start)
    Parameters
    Type Name Description
    System.Double distance

    The distance from the start parameter.

    System.Double start

    The parameter from which to measure the distance between domain.min and domain.max.

    Returns
    Type Description
    System.Double
    Overrides
    Curve.ParameterAtDistanceFromParameter(Double, Double)

    PointAt(Double)

    Get a point on the polycurve at parameter u.

    Declaration
    public override Vector3 PointAt(double u)
    Parameters
    Type Name Description
    System.Double u

    A value between domain.min and domain.max.

    Returns
    Type Description
    Vector3

    Returns a Vector3 indicating a point along the Polygon length from its start vertex.

    Overrides
    Curve.PointAt(Double)

    PointAtInternal(Double, out Int32)

    Get a point on the polycurve at parameter u.

    Declaration
    protected virtual Vector3 PointAtInternal(double u, out int curveIndex)
    Parameters
    Type Name Description
    System.Double u

    A value between domain.min and domain.max.

    System.Int32 curveIndex

    The index of the segment containing parameter u.

    Returns
    Type Description
    Vector3

    Returns a Vector3 indicating a point along the Polygon length from its start vertex.

    ToPolygon()

    Create a polygon from this polycurve.

    Declaration
    public Polygon ToPolygon()
    Returns
    Type Description
    Polygon

    ToString()

    Get a string representation of this polycurve.

    Declaration
    public override string ToString()
    Returns
    Type Description
    System.String
    Overrides
    System.Object.ToString()

    TransformAt(Double)

    Get the transform at the specified parameter along the polycurve.

    Declaration
    public override Transform TransformAt(double u)
    Parameters
    Type Name Description
    System.Double u

    The parameter on the Polygon between domain.min and domain.max.

    Returns
    Type Description
    Transform

    A transform with its Z axis aligned trangent to the polycurve.

    Overrides
    Curve.TransformAt(Double)

    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
    Curve.Transformed(Transform)

    TransformedPolycurve(Transform)

    Create new polycurve transformed by transform.

    Declaration
    public IndexedPolycurve TransformedPolycurve(Transform transform)
    Parameters
    Type Name Description
    Transform transform

    The transform to apply.

    Returns
    Type Description
    IndexedPolycurve

    ValidateVertices()

    Clean up any duplicate vertices, and warn about any vertices that are too close to each other.

    Declaration
    protected virtual void ValidateVertices()

    Explicit Interface Implementations

    IEnumerable.GetEnumerator()

    Declaration
    IEnumerator IEnumerable.GetEnumerator()
    Returns
    Type Description
    System.Collections.IEnumerator

    Implements

    ICurve
    ITransformable<T>
    IBoundedCurve
    System.Collections.Generic.IEnumerable<T>
    System.Collections.IEnumerable
    System.IEquatable<T>