2.3.3.3.67. NXcg_polyline_set

Status:

base class, extends NXcg_primitive_set

Description:

Computational geometry description of a set of polylines. ...

Computational geometry description of a set of polylines.

Each polyline is built from a sequence of vertices (points with identifiers). Each polyline must have a start and an end point. The sequence describes the positive traversal along the polyline when walking from the first to the last vertex.

Symbols:

The symbols used in the schema to specify e.g. dimensions of arrays.

d: The dimensionality, which has to be at least 1.

c: The cardinality of the set, i.e. the number of polylines.

n_v: The number of vertices, supporting the polylines.

n_total: The total number of vertices traversed when visiting every polyline.

Groups cited:

none

Structure:

number_of_unique_vertices: (optional) NX_POSINT {units=NX_UNITLESS}

The total number of vertices that have different positions.

number_of_total_vertices: (optional) NX_INT {units=NX_UNITLESS}

The total number of vertices, irrespective of their eventual uniqueness.

number_of_vertices: (optional) NX_INT (Rank: 1, Dimensions: [c]) {units=NX_UNITLESS}

The total number of vertices of each polyline, irrespectively ...

The total number of vertices of each polyline, irrespectively whether vertices are shared by vertices or not. See the docstring for polylines for further details about how a set with different polyline members should be stored.

vertices: (optional) NX_NUMBER (Rank: 2, Dimensions: [n_v, d]) {units=NX_ANY}

Positions of the vertices which support the members of the polyline set. ...

Positions of the vertices which support the members of the polyline set.

Users are encouraged to reduce the vertices to unique positions and vertices as this often supports with storing geometry data more efficiently. It is also possible though to store the vertex positions naively in which case vertices_are_unique is likely False. Naively, here means that one stores each vertex of a triangle mesh even though many vertices are shared between triangles and thus storing multiple copies of their positions is redundant.

vertices_are_unique: (optional) NX_BOOLEAN

If true indicates that the vertices are all placed at different ...

If true indicates that the vertices are all placed at different positions and have different identifiers, i.e. no points overlap or are counted several times.

polylines: (optional) NX_INT (Rank: 1, Dimensions: [n_total]) {units=NX_UNITLESS}

Sequence of identifier for vertices how they build each polyline. ...

Sequence of identifier for vertices how they build each polyline.

A trivial example is a set with two polylines with three vertices each. If the polylines meet in a junction, say the second vertex is shared and marking the junction between the two polylines, it is possible that there are only five unique positions. This suggests to store five unique vertices.

A non-trivial example is a set with several polylines. Assume that each has a different number of vertices. The array stores the identifier of the vertices in the sequence how the polylines are visited:

The first entry is the identifier of the first vertex of the first polyline, followed by the second vertex of the first polyline, until the last vertex of the first polyline. Thereafter, the first vertex of the second polyline, and so on and so forth. Using the (cumulated) counts in number_of_vertices, the vertices of the n-th polyline can be accessed on the following array index interval: \([\sum_{i=0}^{i=N-1}, \sum_{i=0}^{i=N}]\).

Hypertext Anchors

List of hypertext anchors for all groups, fields, attributes, and links defined in this class.

NXDL Source:

https://github.com/FAIRmat-NFDI/nexus_definitions/tree/fairmat/contributed_definitions/NXcg_polyline_set.nxdl.xml