# 3.3.3.49. NXcg_parallelogram_set¶

**Status**:

base class, extends NXobject

**Description**:

## Computational geometry description of a set of parallelograms in Euclidean space ...

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

The parallelograms do not have to be connected, can have different size, can intersect, and be rotated. This class can also be used to describe rectangles or squares, axis-aligned or not. The class represents different access and description levels to offer both applied scientists and computational geometry experts to use the same base class but rather their specific view on the data:

Most simple many experimentalists wish to communicate dimensions/the size of e.g. a region of interest in the 2D plane. In this case the alignment with axes is not relevant as eventually relevant is only the area of the ROI.

In other cases the extent of the parallelogram is relevant though.

Finally in CAD models we would like to specify the polygon which is parallelogram represents.

Parallelograms are important geometrical primitives. Not so much because of their uses in nowadays, thanks to improvements in computing power, not so frequently any longer performed 2D simulation. Many scanning experiments probe though parallelogram-shaped ROIs on the surface of samples.

Parallelograms have to be non-degenerated, closed, and built of polygons which are not self-intersecting.

The term parallelogram will be used throughout this base class but includes the especially in engineering and more commonly used special cases, rectangle, square, 2D box, axis-aligned bounding box (AABB), or optimal bounding box (OBB) but here the analogous 2D cases.

An axis-aligned bounding box is a common data object in computational science and codes to represent a rectangle whose edges are aligned with the axes of a coordinate system. As a part of binary trees these are important data objects for time- as well as space-efficient queries of geometric primitives in techniques like kd-trees.

An optimal bounding box is a common data object which provides the best tight fitting box about an arbitrary object. In general such boxes are rotated. Other than in 3D dimensions the rotation calipher method offers a rigorous approach to compute optimal bounding boxes in 2D.

**Symbols**:

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

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

**Groups cited**:NXcg_face_list_data_structure, NXcg_unit_normal_set, NXorientation_set, NXtransformations

**Structure**:

dimensionality: (optional) NX_POSINT {units=NX_UNITLESS}Obligatory value:

`2`

cardinality: (optional) NX_POSINT {units=NX_UNITLESS}

shape: (optional) NX_NUMBER (Rank: 2, Dimensions: [c, 2]) {units=NX_LENGTH}A qualitative description of each parallelogram/rectangle/square/box.

length: (optional) NX_NUMBER (Rank: 1, Dimensions: [c]) {units=NX_LENGTH}## Qualifier how one edge is longer than all the other edge of the parallelogam. ...

Qualifier how one edge is longer than all the other edge of the parallelogam. Often the term length is associated with one edge being parallel to an axis of the coordinate system.

width: (optional) NX_NUMBER (Rank: 1, Dimensions: [c]) {units=NX_LENGTH}## Qualifier often used to describe the length of an edge within ...

Qualifier often used to describe the length of an edge within a specific coordinate system.

center: (optional) NX_NUMBER (Rank: 2, Dimensions: [c, 2]) {units=NX_LENGTH}## Position of the geometric center, which often is but not necessarily ...

Position of the geometric center, which often is but not necessarily has to be the center_of_mass of the parallelogram.

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

is_axis_aligned: (optional) NX_BOOLEAN (Rank: 1, Dimensions: [c])## Only to be used if is_box is present. In this case, this field describes ...

Only to be used if is_box is present. In this case, this field describes whether parallelograms are rectangles/squares whose primary edges are parallel to the axes of the Cartesian coordinate system.

identifier_offset: (optional) NX_INT {units=NX_UNITLESS}## Integer which specifies the first index to be used for distinguishing ...

Integer which specifies the first index to be used for distinguishing parallelograms. 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 parallelograms for explicit indexing.

TRANSFORMATIONS: (optional) NXtransformations## Reference to or definition of a coordinate system with ...

Reference to or definition of a coordinate system with which the qualifiers and mesh data are interpretable.

orientation: (optional) NXorientation_set

vertex_normal: (optional) NXcg_unit_normal_set

edge_normal: (optional) NXcg_unit_normal_set

face_normal: (optional) NXcg_unit_normal_set

parallelograms: (optional) NXcg_face_list_data_structure## A simple approach to describe the entire set of parallelograms when the ...

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

parallelogram: (optional) NXcg_face_list_data_structureDisentangled representations of the mesh of specific parallelograms.

## Hypertext Anchors¶

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