NXcg_polygon_set

Status:

base class, extends NXobject

Description:

Computational geometry description of a set of polygons in Euclidean space.

Polygons are related are specialized polylines:

  • A polygon is a geometric primitive that is bounded by a closed polyline

  • All vertices of this polyline lay in the d-1 dimensional plane. whereas vertices of a polyline do not necessarily lay on a plane.

  • A polygon has at least three vertices.

Each polygon is built from a sequence of vertices (points with identifiers). The members of a set of polygons may have a different number of vertices. Sometimes a collection/set of polygons is referred to as a soup of polygons.

As three-dimensional objects, a set of polygons can be used to define the hull of what is effectively a polyhedron; however users are advised to use the specific NXcg_polyhedron_set base class if they wish to describe closed polyhedra. Even more general complexes can be thought, for instance piecewise-linear complexes, as these can have holes though, polyhedra without holes are one subclass of such complexes, users should rather design an own base class e.g. NXcg_polytope_set to describe such even more complex primitives.

Symbols:

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

d: The dimensionality, which has to be either 2 or 3.

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

n_total: The total number of vertices when visiting every polygon.

Groups cited:

NXcg_face_list_data_structure, NXcg_hexahedron_set, NXcg_unit_normal_set

Structure:

dimensionality: (optional) NX_POSINT {units=NX_UNITLESS}

Any of these values: 2 | 3

cardinality: (optional) NX_POSINT {units=NX_UNITLESS}

number_of_total_vertices: (optional) NX_POSINT {units=NX_UNITLESS}

identifier_offset: (optional) NX_INT {units=NX_UNITLESS}

Integer which specifies the first index to be used for distinguishing polygons. Identifiers are defined either implicitly or explicitly. For implicit indexing the identifiers are defined on the interval [identifier_offset, identifier_offset+c-1]. For explicit indexing the identifier array has to be defined.

The identifier_offset field can for example be used to communicate if the identifiers are expected to start from 1 (referred to as Fortran-/Matlab-) or from 0 (referred to as C-, Python-style index notation) respectively.

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

Integer used to distinguish polygons for explicit indexing.

area: (optional) NX_NUMBER (Rank: 1, Dimensions: [c]) {units=NX_AREA}

edge_length: (optional) NX_NUMBER (Rank: 1, Dimensions: [c]) {units=NX_LENGTH}

The accumulated length of the polygon edge.

interior_angle: (optional) NX_NUMBER (Rank: 1, Dimensions: [n_total]) {units=NX_ANGLE}

Array of interior angles. There are many values per polygon as number_of_vertices. The angle is the angle at the specific vertex, i.e. between the adjoining edges of the vertex according to the sequence in the polygons array. Usually, the winding_order field is required to interpret the value.

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

Curvature type:

  • 0 - unspecified,

  • 1 - convex,

  • 2 - concave

center: (optional) NX_NUMBER (Rank: 2, Dimensions: [c, d]) {units=NX_LENGTH}

The center of mass of each polygon.

polygons: (optional) NXcg_face_list_data_structure

A simple approach to describe the entire set of polygons when the main intention is to store the shape of the polygons for visualization.

vertex_normal: (optional) NXcg_unit_normal_set

edge_normal: (optional) NXcg_unit_normal_set

face_normal: (optional) NXcg_unit_normal_set

bounding_box: (optional) NXcg_hexahedron_set

Axis-aligned or (approximate) (optimal) bounding boxes to each polygon.

Hypertext Anchors

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

NXDL Source:

https://github.com/FAIRmat-Experimental/nexus_definitions/tree/fairmat/contributed_definitions/NXcg_polygon_set.nxdl.xml