ShapeBuilder

Description

sealed class Tinman.Terrain.Shapes.ShapeBuilder

Helper class for building geometric shapes.

To build a geometric shape, perform the following steps:

  1. Create a shape builder via Shape.Geometry or call Clear on an existing builder for starting from scratch.

  2. Configure the shape builder flags via Flags.

  3. Configure the geo-reference via Georef.

  4. Configure shape metadata via Metadata.

  5. Configure a coordinate system transformation via Transform.

  6. Configure a vertex transformation via Matrix.

  7. Add geometric primitives:

    • Vertices (see Vertex* methods)

    • Edges (see Edge* methods)

    • Triangles (see Triangle* methods)

    • Values (see Value* methods)

  8. Add pre-defined geometric shapes:

  9. Finish shape building by calling one of the following methods:

See also

Shape.Geometry

Public / Constructors

Build


public method Build → (2)

edgeParity opt : int32 = 0

Edge parity to use.

clear opt : bool = true

Clear all geometry data with Clear after building the shape?

returns → IShape

The IShape object or null if the shape is empty.

Creates a new instance of IShape from the specified vertices (see Vertex1), edges (see Edge2) and/or triangles (see Triangle2).

This method only delegates to other methods, in the following order:

  1. Mesh: when one or more triangles have been specified.

  2. Graph: when one or more edges have been specified and edgeParity opt is zero.

  3. Polygon: when one or more edges have been specified and edgeParity opt is not zero.

  4. Points: otherwise

Graph


public method Graph → (1)

clear opt : bool = true

Clear all geometry data with Clear after building the shape?

returns → IShape

The IShape object or null if the shape is empty.

Creates a new instance of IShape from the specified vertices (see Vertex1) and edges (see Edge2).

Hull


public method Hull → (1)

clear opt : bool = true

Clear all geometry data with Clear after building the shape?

returns → IShape

The IShape object or null if the shape is empty.

Creates a new instance of IShape that represents the convex hull of the specified vertices (see Vertex1).

The returned shape is a convex polygon that contains all specified vertices (the signed distance from the vertex to the shape is less than or equal to zero).

Mesh


public method Mesh → (1)

clear opt : bool = true

Clear all geometry data with Clear after building the shape?

returns → IShape

The IShape object or null if the shape is empty.

Creates a new instance of IShape from the specified vertices and triangles.

Points


public method Points → (1)

clear opt : bool = true

Clear all geometry data with Clear after building the shape?

returns → IShape

The IShape object or null if the shape is empty.

Creates a new instance of IShape from the specified vertices (see Vertex1).

Polygon


public method Polygon → (2)

negative opt : bool = true

Shall the built polygon have negative parity (IShapeInfo.EdgeParity)? If unsure, just pass true, as negative parity is the default.

clear opt : bool = true

Clear all geometry data with Clear after building the shape?

returns → IShape

The IShape object or null if the shape is empty.

Creates a new instance of IShape from the specified vertices (see Vertex1) and edges (see Edge2).

The signed area of a polygon can be used to determine the parity, if the vertex winding is not intended to be relevant (see Area1).

Public / Methods

Add

2 overloads


public method Add1 → (3)

shape in : IShape

The shape.

flip opt : bool = false

Flip edge resp. triangle vertices? If the current transformation flips handedness (see Matrix, the given value is inverted to compensate.

values opt : ShapeValue = ShapeValue.All

The custom per-vertex values to add.

returns → ShapeBuilder

this

Adds all vertices, edges and triangles of the given shape.

When flip opt is true, edges (A,B) resp. triangles (A,B,C) are added as (B,A) resp. (C,B,A).


public method Add2 → (3)

shape in : IShape

The shape.

parity in : int32

The desired edge parity (see remarks), usually for the final call to Build or Polygon.

values opt : ShapeValue = ShapeValue.All

The custom per-vertex values to add.

returns → ShapeBuilder

this

Adds all vertices, edges and triangles of the given shape.

This method delegates to Add1, computing the flip parameter as follows:

  1. If parity in or IShapeInfo.EdgeParity of shape in is 0, flip is false.

  2. If the sign of parity in is equal to the edge parity of shape in, flip is false.

  3. Otherwise, flip is true.

Arc­Inner


public method ArcInner → (5)

center in : Vec2D

The center of the oval from which to create the arc.

in : Vec2D

Vector pointing from center in to start of arc.

in : Vec2D

Vector pointing from center in to end of arc.

in : int32

[>=1]
The number of segments between in and in.

closed opt : bool = true

Create a closed contour starting and ending at center in"/>, instead of just an arc?

returns → ShapeBuilder

this.

Creates a vertex contour that runs from in to in over the inner path (i.e. the shorter one).

The edge parity of the contour is the sign of IVec2Ops.Cross2 for in and in.

Arc­Outer


public method ArcOuter → (5)

center in : Vec2D

The center of the oval from which to create the arc.

in : Vec2D

Vector pointing from center in to start of arc.

in : Vec2D

Vector pointing from center in to end of arc.

in : int32

[>=1]
The number of segments between in and in.

closed opt : bool = true

Create a closed contour starting and ending at center in"/>, instead of just an arc?

returns → ShapeBuilder

this.

Creates a vertex contour that runs from in to in over the outer path (i.e. the longer one).

The edge parity of the contour is the sign of IVec2Ops.Cross2 for in and in.

Area

2 overloads


public method Area1 → ()

returns → float64

The signed area.

Computes the signed area of the simple polygon defined by the sequence of vertices that have been added to this builder.


public method Area2 → (2)

in : int32

Index of first polygon vertex.

in : int32

Index of last polygon vertex.

returns → float64

The signed area.

Computes the signed area of the simple polygon defined by the given sequence of vertices.

Arrow


public method Arrow → (6)

from in : Vec2D

Base point of arrow.

to in : Vec2D

Tip point of arrow.

width opt : float64 = 0.7

Scale factor from length to width.

widthShaft opt : float64 = 0.25

Scale factor from width to widthShaft.

lengthShaft opt : float64 = 0.5

Scale factor length to lengthShaft.

lengthHead opt : float64 = 0.6

Scale factor length to lengthHead.

returns → ShapeBuilder

this.

Creates a vertex contour for an arrow shape (negative edge parity).

The arrow shape vertices a are determined by these dimensions:

       /         /\             \
       |        /  \            |
       |       /    \           |
       |      /      \          | lengthHead
       |     /        \         |
length |    /  _    _  \        |
       |   /.-´ |  | `-.\   \   /
       |        |  |        |
       |        |  |        | lengthShaft
       \        `--´        /

                \__/
             widthShaft

           \____________/
               width

The length is the distance between from in and to in. The other dimensions are defined by the ratios given as parameters.

Circle


public method Circle → (3)

center in : Vec2D

The circle center.

radius in : float64

[>=0]
The circle radius.

in : int32

The number of segments per circle quadrant. Is negative, vertices winding is flipped.

returns → ShapeBuilder

this

Creates a vertex contour for a circle shape by defining an approximating polygon (negative edge parity).

Clear


public method Clear → ()

returns → ShapeBuilder

this

Clears all geometry data in the shape builder.

After calling this method, the following lists will be empty:

The default behaviour will clear all geometry data after building a shape with Build, Graph, Hull, Mesh, Points or Polygon.

Clear­Edges


public method ClearEdges → ()

returns → ShapeBuilder

this

Clears geometry data in the shape builder.

After calling this method, the following lists will be empty:

Clear­Triangles


public method ClearTriangles → ()

returns → ShapeBuilder

this

Clears geometry data in the shape builder.

After calling this method, the following lists will be empty:

Clear­Values


public method ClearValues → (1)

values opt : ShapeValue = ShapeValue.All

The custom per-vertex values to clear.

returns → ShapeBuilder

this

Clears geometry data in the shape builder.

After calling this method, the following lists will be empty:

  • Values, for the given values opt

Clear­Vertices


public method ClearVertices → ()

returns → ShapeBuilder

this

Clears geometry data in the shape builder.

After calling this method, the following lists will be empty:

Copy


public method Copy → (2)

shape in : IShape

The shape.

values opt : ShapeValue = ShapeValue.All

The custom per-vertex values to copy.

returns → ShapeBuilder

this

Copies all vertices from the given shape.

Curve


public method Curve → (7)

curve in : ICurve

[not-null]
The curve to follow.

range in : RangeD

The control point index range of the shape.

y1b in : float64

Coefficient for Y-coordinate, in curve-space (see remarks).

y2b in : float64

Coefficient for Y-coordinate, in curve-space (see remarks).

y1m opt : float64 = 0

Coefficient for Y-coordinate, in curve-space (see remarks).

y2m opt : float64 = 0

Coefficient for Y-coordinate, in curve-space (see remarks).

accuracy opt : float64 = 0

[>=0]
The sub-division accuracy to achieve, given as the maximum allowed error in the shape coordinate system (treating control point position and tangent values as 2D vectors). Set to 0 to disable.

returns → ShapeBuilder

this.

Builds geometry follows the given curve and adds it to this shape builder.

Curve-space is defined as follows:

  • The coordinate origin coincides with the result of ICurve.Compute2D for the control point index zero.

  • The X-axis represents the control point indices in the range [0..N], where N is ICurve.Count minus one.

  • The Y-axis is perpendicular to the curve, where the Y-coordinate zero always lies on the curve. The sign of the Y-axis is chosen so that the points A, B and C form a triangle, according to IShape.TriangleAt:

    A = (X,0)
    B = (X + epsilon,0)
    C = (X, epsilon)

    where X is an X-coordinate value and epsilon is some sufficiently small value. The orientation of the Y-axis depends on the X-coordinate.

The geometry extend along the X-axis is defined with range in. The extend along the Y-axis is computed from the Vec4D.Z values, which are obtained from ICurve.Compute3D:

y1 = y1m * Z + y1b
y2 = y2m * Z + y2b

Depending on the parameter values, the following geometry is generated:

  • If range in has non-zero length and, y1b in != y2b in or y1m opt != y2m opt:
    A polygon contour with negative parity (y1b in < y2b in) or positive parity ( y1b in > y2b in), see ShapeType.Polygon

  • Otherwise, if range in has zero length and y1b in = y2b in and y1m opt = y2m opt:
    A point, see ShapeType.Points.

  • Otherwise:
    A polyline which is either perpendicular to the curve or parallel to it, see ShapeType.Graph

Edge

3 overloads


public method Edge1 → ()

returns → ShapeBuilder

this

Specifies an edge when building a graph shape (see Graph).

This method uses the two most recently specified vertices (N-2, N-1), where N is the value of Index when this method is called.


public method Edge2 → (2)

in : int32

Index of first edge vertex.

in : int32

Index of second edge vertex.

returns → ShapeBuilder

this

Specifies an edge when building a graph shape (see Graph) or polygon shape (see Polygon).


public method Edge3 → (1)

edge in : Vec2I

Indices of edge vertices.

returns → ShapeBuilder

this

Specifies an edge when building a graph shape (see Graph) or polygon shape (see Polygon).

Edge­List

6 overloads


public method EdgeList1 → (1)

closed opt : bool = true

Connect last vertex to first one?

returns → ShapeBuilder

this

Specifies a sequence of connected edges (polyline) when building a graph shape (see Graph) or polygon shape (see Polygon).

An edge is generated for each pair of recently added vertices, i.e. the vertices in the range from Last (inclusive) to Index (exclusive).


public method EdgeList2 → (3)

in : int32

Index of first vertex.

in : int32

Index of last vertex.

closed opt : bool = true

Connect last vertex to first one?

returns → ShapeBuilder

this

Specifies a sequence of connected edges (polyline) when building a graph shape (see Graph) or polygon shape (see Polygon).

The vertex sequence can be reversed by swapping in and in.


public method EdgeList3 → (2)

edges in : Vec2I

Index of first (see Vec2I.X) resp. last (see Vec2I.Y) contour vertex.

closed opt : bool = true

Connect last vertex to first one?

returns → ShapeBuilder

this

Specifies a sequence of connected edges (polyline) when building a graph shape (see Graph) or polygon shape (see Polygon).

The vertex sequence can be reversed by swapping Vec2I.X and Vec2I.Y of edges in.


public method EdgeList4 → (3)

edges in : Vec2I [ ]

[not-null]
The list of edges (from Vec2I.X to Vec2I.Y, each).

offset opt : int32 = 0

[0..edges.Length]
Offset into edges in.

count opt : int32 = -1

[-1..edges.Length-offset]
Number of edges to read from edges in. If -1, all remaining edges will be read.

returns → ShapeBuilder

this

Specifies a series of edges.


public method EdgeList5 → (1)

edges in : IArrayVector<Vec2I>

[not-null]
The list of edges (from Vec2I.X to Vec2I.Y, each).

returns → ShapeBuilder

this

Specifies a series of edges.


public method EdgeList6 → (1)

edges in : IVectorConst<Vec2I>

[not-null]
The list of edges (from Vec2I.X to Vec2I.Y, each).

returns → ShapeBuilder

this

Specifies a series of edges.

Flags


public method Flags → (1)

value in : ShapeBuilderFlags

The current flags.

returns → ShapeBuilder

this

Specifies the shape builder flags.

The default flags are ShapeBuilderFlags.None.

Georef


public method Georef → (1)

georef in : CoordinateSystem

The coordinate system or null.

returns → ShapeBuilder

this

Specifies the coordinate system of the shape being built.

Grid


public method Grid → (6)

in : Vec2D

First grid corner point.

in : Vec2D

Second grid corner point.

in : Vec2D

Third grid corner point.

in : Vec2D

Fourth grid corner point.

in : int32

Number of grid points between in and in (inclusive).

in : int32

Number of grid points lines between in and in (inclusive).

returns → ShapeBuilder

this.

Creates a grid shape.

The grid is specified by the four given control points:

(a)----- + ----- + ----- + -----(b)
 |       |       |       |       |
 + ----- + ----- + ----- + ----- +
 |       |       |       |       |
 + ----- + ----- + ----- + ----- +
 |       |       |       |       |
(d)----- + ----- + ----- + -----(c)

Matrix­Pop


public method MatrixPop → ()

returns → ShapeBuilder

this

Removes the current transformation from the stack, which restores the transformation that has been in place before the most recent call to MatrixPush.

Matrix­Push


public method MatrixPush → (1)

matrix in : Mat3D

The matrix to apply after the current matrix.

returns → ShapeBuilder

this

Appends the given transformation matrix to the current one, until MatrixPop is called.

Metadata


public method Metadata → (1)

metadata in : IJsonValue

The metadata or null.

returns → ShapeBuilder

this

Specifies the metadata of the shape being built.

Oval


public method Oval → (4)

center in : Vec2D

The center of the oval.

in : Vec2D

First vector pointing from center in to oval edge.

in : Vec2D

Second vector pointing from center in to oval edge.

in : int32

[>=1]
The number of segments between in and in.

returns → ShapeBuilder

this.

Creates a vertex contour for an oval shape defining an approximating polygon.

The edge parity of the contour is the sign of IVec2Ops.Cross2 for in and in.

Rectangle

3 overloads


public method Rectangle1 → (2)

box in : Box2D

The rectangle.

parity opt : int32 = -1

The desired edge parity, see Add2 for details.

returns → ShapeBuilder

this

Specifies a rectangle.

This method delegates to Rectangle2,


public method Rectangle2 → (3)

in : Vec2D

Coordinate of first rectangle corner.

in : Vec2D

Coordinate of second rectangle corner.

flip opt : bool = false

Flip vertex order?

returns → ShapeBuilder

this

Specifies a rectangle.

This method delegates to Rectangle3,


public method Rectangle3 → (5)

x0 in : float64

X-coordinate of first rectangle corner.

y0 in : float64

Y-coordinate of first rectangle corner.

x1 in : float64

X-coordinate of second rectangle corner.

y1 in : float64

Y-coordinate of second rectangle corner.

flip opt : bool = false

Flip vertex order?

returns → ShapeBuilder

this

Specifies a rectangle.

This method calls Vertex1 in this order:

  • (x0 in, y0 in)

  • (x1 in, y0 in)

  • (x1 in, y1 in)

  • (x0 in, y1 in)

or if flip opt is true:

  • (x0 in, y0 in)

  • (x0 in, y1 in)

  • (x1 in, y1 in)

  • (x1 in, y0 in)

Then, the EdgeList1 method is called.

Transform


public method Transform → (4)

transform in : CoordinateSystemTransform

[not-null]
The coordinate system transformation to use.

accuracy opt : float64 = 0

[>=0]
Optional accuracy to use for subdivision of edges, interpreted according to geocentric opt. Set to 0 to disable edge subdivision.

geocentric opt : bool = false

Depicts how to interpret the given accuracy opt:
false : maximum error in the target coordinate system (see (see CoordinateSystemTransform.Target)
true : maximum error in the geocentric frame (see Geocentric).

verticalType opt : VerticalType = VerticalType.Ellipsoid

When geocentric opt is true, specifies the vertical coordinate type to use for computing the maximum error in the geocentric frame.

returns → ShapeBuilder

this

Applies the given coordinate transform while building shapes.

When a coordinate transform is given, the specified vertices are expected to be in the source coordinate system (see CoordinateSystemTransform.Source). The built shapes will have the target coordinate system as geo-reference (see IShapeInfo.Georef). So it is not necessary to call Georef when using a transform.

All existing geometry is cleared by this method.

See also

Geocentric

Triangle

3 overloads


public method Triangle1 → ()

returns → ShapeBuilder

this

Specifies a triangle when building a mesh shape (see Mesh).

This method uses the three most recently specified vertices (N-3, N-2, N-1), where N is the value of Index when this method is called.

If necessary, the given triangle vertices will be adjusted to meet the requirements of IShape.TriangleAt.


public method Triangle2 → (3)

in : int32

Index of first triangle vertex.

in : int32

Index of second triangle vertex.

in : int32

Index of third triangle vertex.

returns → ShapeBuilder

this

Specifies a triangle when building a mesh shape (see Mesh).

If necessary, the given triangle vertices will be adjusted to meet the requirements of IShape.TriangleAt.


public method Triangle3 → (1)

triangle in : Vec3I

Indices of triangle vertices.

returns → ShapeBuilder

this

Specifies a triangle when building a mesh shape (see Mesh).

If necessary, the given triangle vertices will be adjusted to meet the requirements of IShape.TriangleAt.

Triangle­List

3 overloads


public method TriangleList1 → (3)

triangles in : Vec3I [ ]

[not-null]
The list of triangles.

offset opt : int32 = 0

[0..triangles.Length]
Offset into triangles in.

count opt : int32 = -1

[-1..triangles.Length-offset]
Number of triangles to read from triangles in. If -1, all remaining triangles will be read. Defaults to -1.

returns → ShapeBuilder

this

Specifies a series of triangles.


public method TriangleList2 → (1)

triangles in : IArrayVector<Vec3I>

[not-null]
The list of triangles.

returns → ShapeBuilder

this

Specifies a series of triangles.


public method TriangleList3 → (1)

triangles in : IVectorConst<Vec3I>

[not-null]
The list of triangles.

returns → ShapeBuilder

this

Specifies a series of triangles.

Value

2 overloads


public method Value1 → (2)

value in : float64

The custom value.

type in : ShapeValue

The type of value in.

returns → ShapeBuilder

this

Specifies the custom value for the vertex that will be added next (see Index).

Custom values may be specified for vertices that have not yet been added to the shape builder and will be dropped silently if no vertex is specified for them.


public method Value2 → (3)

vertex in : int32

[>=0]
The vertex index.

value in : float64

The custom value.

type in : ShapeValue

The type of value in.

returns → ShapeBuilder

this

Specifies the custom value for the given vertex.

Custom values may be specified for vertices that have not yet been added to the shape builder and will be dropped silently if no vertex is specified for them.

Values


public method Values → (1)

type in : ShapeValue

The value type.

returns → IArrayVector<float64>

The value list or null iff no custom value of the given type in has been specified so far.

The custom per-vertex values that have been specified.

Vertex

2 overloads


public method Vertex1 → (2)

in : float64

X-coordinate of vertex.

in : float64

Y-coordinate of vertex.

returns → ShapeBuilder

this

Specifies a new vertex.


public method Vertex2 → (1)

vertex in : Vec2D

The vertex coordinates.

returns → ShapeBuilder

this

Specifies a new vertex.

Vertex­Geographic2D


public method VertexGeographic2D → (1)

vertex in : LatLon

The vertex coordinates.

returns → ShapeBuilder

this

Specifies a new vertex.

If a coordinate system has been specified, the given vertex in coordinates will be transformed with ICoordinateTransform.GeographicToMap of CoordinateSystem.CreateCoordinateTransform. Otherwise, the result of LatLon.ToDegrees will be used. The resulting coordinates are then passed to Vertex2.

Vertex­Geographic3D


public method VertexGeographic3D → (1)

vertex in : LatLonHeight

The vertex coordinates.

returns → ShapeBuilder

this

Specifies a new vertex.

This method delegates to VertexGeographic2D passing LatLonHeight.Coords and then to Value2 passing LatLonHeight.Vertical as ShapeValue.Vertical.

Vertex­List

3 overloads


public method VertexList1 → (3)

vertices in : Vec2D [ ]

[not-null]
The list of vertices.

offset opt : int32 = 0

[0..vertices.Length]
Offset into vertices in.

count opt : int32 = -1

[-1..vertices.Length-offset]
Number of vertices to read from vertices in. If -1, all remaining vertices will be read.

returns → ShapeBuilder

this

Specifies a series of vertices.


public method VertexList2 → (1)

vertices in : IArrayVector<Vec2D>

[not-null]
The list of vertices.

returns → ShapeBuilder

this

Specifies a series of vertices.


public method VertexList3 → (1)

vertices in : IVectorConst<Vec2D>

[not-null]
The list of vertices.

returns → ShapeBuilder

this

Specifies a series of vertices.

Vertex­List­Geographic2D

3 overloads


public method VertexListGeographic2D1 → (3)

vertices in : LatLon [ ]

[not-null]
The list of vertices.

offset opt : int32 = 0

[0..vertices.Length]
Offset into vertices in.

count opt : int32 = -1

[-1..vertices.Length-offset]
Number of vertices to read from vertices in. If -1, all remaining vertices will be read.

returns → ShapeBuilder

this

Specifies a series of vertices.


public method VertexListGeographic2D2 → (1)

vertices in : IArrayVector<LatLon>

[not-null]
The list of vertices.

returns → ShapeBuilder

this

Specifies a series of vertices.


public method VertexListGeographic2D3 → (1)

vertices in : IVectorConst<LatLon>

[not-null]
The list of vertices.

returns → ShapeBuilder

this

Specifies a series of vertices.

Vertex­List­Geographic3D

3 overloads


public method VertexListGeographic3D1 → (3)

vertices in : LatLonHeight [ ]

[not-null]
The list of vertices.

offset opt : int32 = 0

[0..vertices.Length]
Offset into vertices in.

count opt : int32 = -1

[-1..vertices.Length-offset]
Number of vertices to read from vertices in. If -1, all remaining vertices will be read.

returns → ShapeBuilder

this

Specifies a series of vertices.


public method VertexListGeographic3D2 → (1)

vertices in : IArrayVector<LatLonHeight>

[not-null]
The list of vertices.

returns → ShapeBuilder

this

Specifies a series of vertices.


public method VertexListGeographic3D3 → (1)

vertices in : IVectorConst<LatLonHeight>

[not-null]
The list of vertices.

returns → ShapeBuilder

this

Specifies a series of vertices.

Public / Attributes

Edges


public attribute Edges → (get)

value : IArrayVector<Vec2I>

[not-null]
The edge list.

The list of edges that have been specified.

Geocentric


public attribute Geocentric → (get)

value : Geocentric

The geocentric helper object or null iff not in geocentric mode.

In geocentric mode (see Transform), returns the helper object that is used for geocentric computations.

Index


public attribute Index → (get)

value : int32

[>=0]
The next vertex index.

Returns the next vertex index.

Indices­Original


public attribute IndicesOriginal → (get)

value : int32 [ ]

The vertex index mapping of the most recently built shape or null.

Mapping from vertex indices of the built shape to the original input vertex indices that have been specified while building.

For a given shape vertex A (see IShape.VertexAt), the corresponding builder vertex B (see Index) can be retrieved this way:

B = IndicesOriginal[A]

Last


public attribute Last → (get)

value : int32

[0..ShapeBuilder.Index]
The next vertex index.

Returns the index of the last vertex.

Each time an edge or a triangle is added, the last vertex is set to Index.

Matrix


public attribute Matrix → (get,set)

value : Mat3D

The transformation matrix.

The current vertex transformation matrix.

The homogeneous 2D transformation matrix is applied to the input vertex coordinates (see IMat3Ops.MulW11) that are provided when new vertices are added to the shape builder. The transformation may flip handedness (i.e. IMatOps.Determinant is negative), which is taken into account by Add1 and Rectangle1. Otherwise, the shape builder is agnostic to flipped handedness.

Settings the transformation matrix resets the transformation stack, making it contain only the given value.

The defaults value is Mat3D.Identity.

Triangles


public attribute Triangles → (get)

value : IArrayVector<Vec3I>

[not-null]
The vertex list.

The list of triangles that have been specified.

Vertices


public attribute Vertices → (get)

value : IArrayVector<Vec2D>

[not-null]
The vertex list.

The list of vertices that have been specified.