TINMAN 3D / REALTIME TERRAIN
Software Development Kit - User Manual

class ShapeGroup in Tinman.Terrain.Shapes

Default implementation of the IShapeGroup interface.

sealed class ShapeGroup implements IShapeGroup
  extends ShapeBase

Configuration

ToConfig

Returns the configuration value that describes this object.

public override method ToConfig ()
type ConfigValue
returns [not-null] The configuration value.
implements ShapeBase.ToConfig

Remarks:

All configurable objects need to implement this interface. For simple types, it is preferable to delegate to ToValue.

The returned value may be of type Invalid, which means that this object in its current state cannot be described with the configuration API.

Before returning the resulting configuration value, Cache must be called on it, passing this IConfigurable object as parameter.

Serialization

SerialId

Serialization information about this type.

public static readonly field SerialId
type ISerialTypeInfo

Public / Attributes

Bounds

Returns the axis-aligned bounding box of this shape.

public override property Bounds { get }
type Box2D
value The axis-aligned bounding box.
implements ShapeBase.Bounds

Remarks:

The bounding box is defined as the smallest possible rectangle that contains all points which have a shape distance of zero or less.

EdgeCount

Returns the number of shape edges.

public virtual property EdgeCount { get }
type int32
value [>=0] The number of shape edges.
inherited ShapeBase.EdgeCount

See also:

IShape.EdgeAt

EdgeParity

Defines how the vertex winding of polygon contours is interpreted (outer rings vs. holes).

public virtual property EdgeParity { get }
type int32
value The parity value: +/- 1 for polygons, 0 for non-polygon shapes.
inherited ShapeBase.EdgeParity

Remarks:

A polygon contour is classified as an outer ring or a hole according to the sign of its signed area:

outer := sign(Area(contour)) == Parity
hole  := sign(Area(contour)) != Parity
The default value is -1 (i.e. clockwise orientation in a standard Cartesian coordinate system).

Georef

The coordinate system of the shape.

public override property Georef { get }
type CoordinateSystem
value [not-null] The coordinate system.
overrides ShapeBase.Georef

Remarks:

The default coordinate system is a local one (see IsLocal) in metres (see Metre).

IsCubemap

Is this a cubemap shape?

public virtual property IsCubemap { get }
type bool
value true if this is a cubemap shape, false if not.
inherited ShapeBase.IsCubemap

Remarks:

Cubemap shapes have a geographic coordinate system (see IsGeographic) and six separate sub-shapes, one for each cubemap face (see Cubemap)).

See also:

IShape.TransformCubemap
IShape.Face

IsGeometry

Does this shape consist of plain geometry only?

public virtual property IsGeometry { get }
type bool
value true if this shape has plain geometry only, false if not.
inherited ShapeBase.IsGeometry

Remarks:

Shapes with plain geometry can be rebuilt via Geometry.

SerialType

Returns the serial type of this object.

public property SerialType { get }
type ISerialTypeInfo
value [not-null] The serial type.
inherited SerializableBase.SerialType

SerialVersion

Returns the serial data version.

public virtual property SerialVersion { get }
type int32
value [>=1] The serial data version tag.
inherited SerializableBase.SerialVersion

Remarks:

An ISerializable implementation is required to support all versions up to the one returned by SerialVersion.

See also:

ISerializable.Serialize
ISerializable.Deserialize

Shapes

The shapes in this group.

public property Shapes { get }
type IVectorConst<IShape>
value [not-null] The list of shapes in this group.
implements IShapeGroup.Shapes

TriangleCount

Returns the number of shape triangles.

public virtual property TriangleCount { get }
type int32
value [>=0] The number of shape triangles.
inherited ShapeBase.TriangleCount

Type

The shape type.

public override property Type { get }
type ShapeType
value The shape type.
overrides ShapeBase.Type

VertexCount

Returns the number of shape vertices.

public virtual property VertexCount { get }
type int32
value [>=0] The number of shape vertices.
inherited ShapeBase.VertexCount

Remarks:

When the vertex count is zero, the shape is defined implicitly. If the vertex count is greater than zero, the shape is explicitly defined by its vertices.

See also:

IShape.VertexAt

Public / Constructors

ShapeGroup

Creates a new instance of ShapeGroup.

public constructor ShapeGroup (CoordinateSystem georef, float64 accuracy = 0)
params georef [not-null] The georeference of the shape group.
  accuracy [>=0] Optional accuracy to use for subdivision of edges. Given as a maximum error in the target coordinate system (see georef). Set to 0 to disable edge subdivision. Defaults to 0.

Public / Methods

Absolute

Returns a shape that returns the absolute distance value (i.e. the outline of this shape).

public virtual method Absolute ()
type IShape
returns [not-null] The resulting shape.
inherited ShapeBase.Absolute

Accept

Accepts the given IShapeVisitor object.

public override method Accept (IShapeVisitor visitor, object userData = null)
params visitor [not-null] The shape visitor object.
  userData Optional user data. Defaults to null.
overrides ShapeBase.Accept

AddShape

Adds the given shape to this group.

public method AddShape (IShape shape)
type IShape
params shape [not-null] The shape to add.
returns [not-null] The added shape.

Remarks:

The given shape is transformed to the georeference of the shape group, if necessary.

See also:

Shapes

CheckIntersection

Checks the intersection between this shape and the given bounds.

[ThreadSafe]
public virtual method CheckIntersection (Box2D box, float64 offset = 0)
type int32
params box The box bounds.
  offset Optional distance offset to apply to this shape for the intersection test. Defaults to 0.
returns -1 if this shape and box are disjoint.
0 if this shape and box intersect.
1 if box fully contains this shape.
2 if this shape fully contains box.
inherited ShapeBase.CheckIntersection

Compile

Compiles this shape into the most compact form.

public override method Compile ()
type IShape
returns [not-null] The resulting shape.
overrides ShapeBase.Compile

Remarks:

Calling this method will not modify the geometry of a shape, only the object model structure.

Deserialize

Initializes the state of this object from the given data stream.

public override method Deserialize (int32 serialVersion, ISerializer data)
type ISerializable
params serialVersion [>=1] The serial data version.
  data [not-null] The serial data stream.
returns [not-null] The deserialized object. This will typically be this, but in some circumstances, another instance may be returned (e.g. singletons).
overrides SerializableBase.Deserialize

Remarks:

The Deserialize method will be called immediately after the object has been instantiated via its default constructor.

The provided serialVersion number is guaranteed to be equal to or less than the SerialVersion returned by this object (i.e. ISerializable object must provide backwards compatibility).

See also:

ISerializable.Serialize
ISerializable.SerialVersion

DistanceTo

Computes the smallest distance from the given point to the shape.

[ThreadSafe]
public override method DistanceTo (float64 x, float64 y, float64 maximum = Maths.MaxDouble)
type float64
params x X-coordinate of point.
  y Y-coordinate of point.
  maximum The maximum relevant distance. This is a hint for the implementing class which can be exploited in order to optimize performance.
returns Smallest distance to the shape.
implements ShapeBase.DistanceTo

Remarks:

If the point lies outside of the shape, the returned distance will be greater than zero. If the point is inside of the shape, the returned distance will be negative. The returned distance will be zero if the point exactly lies on the shape boundary.


Computes the smallest distance from the given point to the shape, additionally returning the corresponding nearest feature point on the shape.

[ThreadSafe]
public virtual method DistanceTo (float64 x, float64 y, out Vec3I vertices, out Vec3D weights, float64 maximum = Maths.MaxDouble)
type float64
params x X-coordinate of point.
  y Y-coordinate of point.
  vertices Shape vertex indices (see VertexAt) that describe the location of the nearest shape feature.
  weights Location of the nearest shape feature, given as relative weights (i.e. the weight sum is 1) of vertices. The weights are sorted in descending order, i.e. X always holds the greatest weight and Z always holds the smallest weight.
  maximum The maximum relevant distance. This is a hint for the implementing class which can be exploited in order to optimize performance.
returns Smallest distance to the shape. All results greater than maximum are considered irrelevant. Implementing methods are free to discard those results.
inherited ShapeBase.DistanceTo

Remarks:

If the point lies outside of the shape, the returned distance will be greater than zero. If the point is inside of the shape, the returned distance will be negative. The returned distance will be zero if the point exactly lies on the shape boundary.

EdgeAt

Returns a shape edge.

public virtual method EdgeAt (int32 index)
type Vec2I
params index [0..EdgeCount-1] The edge index.
returns The shape edge.
inherited ShapeBase.EdgeAt

Remarks:

Each edge connects two vertices (see VertexAt), in the direction from X to Y.

All points that lie on an edge have a shape distance of zero.

See also:

IShapeInfo.EdgeCount

EdgeWalk

Returns the neighbouring edges for walking along a polygon contour.

public virtual method EdgeWalk (int32 index)
type Vec2I
params index [0..EdgeCount-1] The edge index.
returns Index of neighbouring edge (see IShape):
X points to previous edge, Y points to next edge. The component will be -1 if there is no neighbouring edge (i.e. the contour is not closed). Both components will be -1 for non-polygon shapes.
inherited ShapeBase.EdgeWalk

Face

Returns the shape on the given cubemap face.

public virtual method Face (CubemapFace face)
type IShape
params face The cubemap face.
returns The shape or null if there are no shape parts on the given cubemap face.
inherited ShapeBase.Face

Remarks:

Passing NegZ to an ordinary shape will return this. Cubemap shapes (see TransformCubemap) will return an aggregated shape for each cubemap face, or null.

Cubemap shapes are used by IHeightmapShape and IPixelPyramidShape objects.

Invert

Inverts this shape.

public virtual method Invert ()
type IShape
returns [not-null] The inverted shape.
inherited ShapeBase.Invert

Maximum

Returns a composite shape that returns the maximum distance value (i.e. intersection of this shape and the given one).

public virtual method Maximum (IShape shape)
type IShape
params shape [not-null] The other shape.
returns [not-null] The resulting shape.
inherited ShapeBase.Maximum

Minimum

Returns a composite shape that returns the minimum distance value (i.e. the union of this shape and the given one).

public virtual method Minimum (IShape shape)
type IShape
params shape [not-null] The other shape.
returns [not-null] The resulting shape.
inherited ShapeBase.Minimum

Offset

Applies a distance offset to this shape.

public virtual method Offset (float64 offset)
type IShape
params offset The distance offset to apply.
returns [not-null] The resulting shape.
inherited ShapeBase.Offset

RemoveShape

Removes the given shape from this group.

public method RemoveShape (IShape shape)
type ShapeGroup
params shape [not-null] The shape to remove.
returns [not-null] this

See also:

Shapes

Serialize

Serializes the current state of this object to the given data stream.

public override method Serialize (ISerializer data)
params data [not-null] The serial data stream.
overrides SerializableBase.Serialize

See also:

ISerializable.Deserialize
ISerializable.SerialVersion

TransformCoordinates

Transforms this shape using the given 2D homogeneous matrix.

public virtual method TransformCoordinates (Mat3D matrix)
type IShape
params matrix The 2D homogeneous matrix.
returns [not-null] The transforming shape.
inherited ShapeBase.TransformCoordinates

Remarks:

Shape coordinates of this shape are multiplied with matrix using Mul2 (w = 1) in order to produce shape coordinates of the returned shape.

TransformCoordinateSystem

Transforms this shape to the given coordinate system.

public virtual method TransformCoordinateSystem (CoordinateSystem target, float64 accuracy = 0)
type IShape
params target [not-null] The target coordinate system.
  accuracy [>=0] Optional accuracy to use for subdivision of edges. Given as a maximum error in the target coordinate system (see target. HorizontalUnit). Set to 0 to disable edge subdivision. Defaults to 0.
returns [not-null] The transforming shape.
inherited ShapeBase.TransformCoordinateSystem

Remarks:

Transformation cannot be performed from resp. to a local coordinate system (see IsLocal). A transformation between two local coordinate system is possible, but only a conversion regarding unit of measure (see LocalUnit) and coordinate system flags (see CoordinateSystemFlags) is done.

Implicit shapes cannot be transformed (see IShape).

TransformCubemap

Transforms this shape to a geographic cubemap coordinate system.

public virtual method TransformCubemap (float64 accuracy = 0)
type IShape
params accuracy [>=0] Optional accuracy to use for subdivision of edges. Given as a maximum error in the target coordinate system (see Face). Set to 0 to disable edge subdivision. Defaults to 0.
returns [not-null] The transforming cubemap shape.
inherited ShapeBase.TransformCubemap

See also:

CoordinateSystem.ToCubemapFace

TransformGeometry

Transforms this shape to the given coordinate system.

public override method TransformGeometry (CoordinateSystemTransform transform, float64 accuracy = 0)
type IShape
params transform [not-null] The coordinate system transformation to apply.
  accuracy [>=0] Optional accuracy to use for subdivision of edges. Given as a maximum error in the target coordinate system (see transform. Target. HorizontalUnit). Set to 0 to disable edge subdivision. Defaults to 0.
returns The transformed shape or null if the transformed shape is empty or if the transformation is not possible (see remarks).
overrides ShapeBase.TransformGeometry

Remarks:

Transformation cannot be performed from resp. to a local coordinate system (see IsLocal). A transformation between two local coordinate system is possible, but only a conversion regarding unit of measure (see LocalUnit) and coordinate system flags (see CoordinateSystemFlags) is done.

Implicit shapes cannot be transformed (see IShape).

TriangleAt

Returns a shape triangle.

public virtual method TriangleAt (int32 index)
type Vec3I
params index [0..TriangleCount-1] The triangle index.
returns The shape triangle.
inherited ShapeBase.TriangleAt

Remarks:

Each triangle connects three vertices (see IShape), in the order X, Y, Z, where X <Y and X < Z. The vertex winding is chosen so that the signed triangle area is positive (see Area).

VertexAt

Returns a shape vertex.

public virtual method VertexAt (int32 index)
type Vec2D
params index [0..VertexCount-1] The vertex index.
returns The shape vertex.
inherited ShapeBase.VertexAt

Remarks:

All vertices have a shape distance of zero.

See also:

IShapeInfo.VertexCount