Integrated generic resource: Geometric and topological representation | ISO 10303-42:2021(E) © ISO |
The subject of the scan_data_3d_shape_model schema is the set of basic resources necessary for the communication of data describing the representation of a shape as a cloud of points produced by a scanning process.
This clause defines the information requirements to which implementations shall conform using the EXPRESS language as defined in ISO 10303-11. The following EXPRESS declaration begins the scan_data_3d_shape_model_schema and identifies the necessary external references.Each implementation of an AP that uses this schema and that encodes entity names shall use the encoding specified in Annex A. Each reference to this schema in an open system shall use the identifier encoding specified in Annex B. This schema is illustrated in Annex D using the EXPRESS-G notation.
EXPRESS specification:
*)
SCHEMA scan_data_3d_shape_model_schema;
REFERENCE FROM
measure_schema
--
ISO 10303-41
(global_unit_assigned_context,
positive_length_measure);
REFERENCE FROM
representation_schema
--
ISO 10303-43
(representation,
representation_item,
using_representations);
REFERENCE FROM
product_property_representation_schema
--
ISO 10303-41
(shape_representation);
REFERENCE FROM
support_resource_schema
--
ISO 10303-41
(label);
REFERENCE FROM
geometry_schema
--
ISO 10303-42
(axis2_placement_3d,
geometric_representation_item,
geometric_representation_context);
(*
NOTE 1 The schemas referenced above are specified in the following parts:
measure_schema ISO 10303-41 representation_schema ISO 10303-43 product_property_representation_schema ISO 10303-41 support_resource_schema ISO 10303-41 geometry_schema ISO 10303-42
NOTE 2 See Annex D for a graphical representation of this schema.
The point_cloud_set_or_superset select type collects together, for reference when constructing more complex models, sets and supersets of point clouds.
EXPRESS specification:
*)
TYPE
point_cloud_set_or_superset
=
SELECT
(point_cloud_dataset,
point_cloud_superdataset);
END_TYPE;
(*
A scan_data_shape_representation is a type of shape_representation in which the geometry of a 3D shape is approximately represented by a set of point cloud data produced by a scanner.
EXPRESS specification:
*)
ENTITY scan_data_shape_representation
SUBTYPE OF (shape_representation);
SELF\representation.items : SET[1:?] OF scanned_data_item;
WHERE
WR1: 'REPRESENTATION_SCHEMA.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF(SELF\representation.context_of_items);
END_ENTITY;
(*
Attribute definitions:
items: the scanned_data_items defining the shape;
Formal propositions:
WR1: The context of the scan_data_shape_representation shall be a global_unit_assigned_context. This ensures that the coordinates used to define the points of the scan data geometry have defined units.
A scanned_data_item is a type of geometric_representation_item that represents an element of geometric data produced by a scanner. A scanned_data_item is required to be used in a scan_data_shape_representation.
EXPRESS specification:
*)
ENTITY scanned_data_item
SUPERTYPE OF (ONEOF (point_cloud_dataset,
point_cloud_superdataset,
triangulated_point_cloud_dataset,
scan_3d_model))
SUBTYPE OF (geometric_representation_item);
WHERE
WR1: SIZEOF(QUERY(using_rep <* using_representations(SELF) | NOT ('SCAN_DATA_3D_SHAPE_MODEL_SCHEMA.SCAN_DATA_SHAPE_REPRESENTATION'
IN TYPEOF(using_rep)))) = 0;
END_ENTITY;
(*
Formal propositions:
WR1: Each scanned_data_item shall be used in a scan_data_shape_representation.
A point_cloud_dataset is a type of scanned_data_item, and represents the geometry of a cloud of points produced by a scanner.
NOTE 1 The point_cloud_dataset has subtypes with additional attributes to permit the creation of instances of a point_cloud_dataset with normals, with colours, or with intensities. The and/or relationship between these subtypes enables, for example, the creation as a complex instance, of a point_cloud_dataset with normals and colours attached to each point.
.EXPRESS specification:
*)
ENTITY point_cloud_dataset
SUBTYPE OF (scanned_data_item);
point_coordinates : LIST[1:?] OF LIST[3:3] OF REAL;
END_ENTITY;
(*
Attribute definitions:
point_coordinates: the list of real triples defining the coordinates of the points.
NOTE 2 These real triples have the semantics of length_measures, but are not formally defined as such, the units for these coordinates are defined since a scanned_data_item is required to be used in a scan_data_shape_representation having a global_unit_assigned_context.
EXPRESS specification:
*)
ENTITY point_cloud_dataset_with_normals
SUBTYPE OF (point_cloud_dataset);
normals : LIST[1:?] OF LIST[3:3] OF REAL;
WHERE
WR1: SIZEOF(normals) = SIZEOF(SELF\point_cloud_dataset.point_coordinates);
END_ENTITY;
(*
Attribute definitions:
normals: a list of real triples defining the direction ratios of the normals at each point of the point_cloud_dataset.
Formal propositions:
WR1: The size of thenormals list shall be the same as the size of the point_coordinates list.
EXPRESS specification:
*)
ENTITY point_cloud_dataset_with_colours
SUBTYPE OF (point_cloud_dataset);
colour_indices : LIST[1:?] OF LIST[3:3] OF INTEGER;
WHERE
WR1: SIZEOF(colour_indices) = SIZEOF(SELF\point_cloud_dataset.point_coordinates);
END_ENTITY;
(*
Attribute definitions:
colour_indices: a list of integer triples defining the RGB integer values of the colours at each point of the point_cloud_dataset.
Formal propositions:
WR1: The size of the colour_indices list shall be the same as the size of the point_coordinates list.
EXPRESS specification:
*)
ENTITY point_cloud_dataset_with_intensities
SUBTYPE OF (point_cloud_dataset);
intensities : LIST[1:?] OF REAL;
WHERE
WR1: SIZEOF(intensities) = SIZEOF(SELF\point_cloud_dataset.point_coordinates);
END_ENTITY;
(*
Attribute definitions:
intensities: a list of real numbers defining the intensity value at each point of the point_cloud_dataset.
Formal propositions:
WR1: The size of theintensities list shall be the same as the size of the point_coordinates list.
EXPRESS specification:
*)
ENTITY point_cloud_superdataset
SUBTYPE OF (scanned_data_item);
pts_per_sublist : INTEGER;
sublists : LIST[2:?] OF point_cloud_dataset;
WHERE
WR1: consistent_sizes(SELF.pts_per_sublist, SELF.sublists);
END_ENTITY;
(*
Attribute definitions:
pts_per_sublist: the number of points in each listed point_cloud_dataset, except for the last.
sublists: a list of 2 or more point_cloud_datasets .
Formal propositions:
WR1: The number of points in each point_cloud_dataset in sublists, except for the last shall be pts_per_sublist the last element of the sublists shall not contain more than this number of points. These conditions are verified by the consistent_sizes function.
EXPRESS specification:
*)
ENTITY triangulated_point_cloud_dataset
SUBTYPE OF (scanned_data_item);
points : point_cloud_set_or_superset;
triangles : LIST[1:?] OF LIST[3:3] OF INTEGER;
END_ENTITY;
(*
Attribute definitions:
points: the point_cloud_dataset or point_cloud_superdataset containing the coordinates of the points used to construct the trinagles.
triangles: a list of integer triples defining the locations in points of the coordinate values for the 3 vertices of each triangle. If points is of type point_cloud_dataset the integer directly gives the position in point_coordinates of the coordinates of the vertex point. If points is of type point_cloud_superdataset it is necessary to first determine, by dividing the integer value by pts_per_sublist, the particular point_cloud_dataset in which to find the coordinates position. The remainder from this division is then the required address.
EXAMPLE 1 In the case of a superdataset, if the integer value is 5927 and if the value of pts_per_sublist is 2000, then the required point coordinates will be in position 1927 of the points coordinates list of the 3rd. point_cloud_dataset. If the integer value is exactly 2000 then the required point coordinates are in the last position in the first point_cloud_dataset. points list.
EXPRESS specification:
*)
ENTITY scan_3d_model
SUBTYPE OF (scanned_data_item);
scanner_info : SET[1:?] OF scanner_property;
scanned_points : SET[1:?] OF scanned_data_item;
WHERE
WR1: SIZEOF(QUERY(tmp <* scanned_points | 'SCAN_DATA_3D_SHAPE_MODEL_SCHEMA.SCAN_3D_MODEL' IN TYPEOF(tmp))) = 0;
END_ENTITY;
(*
Attribute definitions:
scanner_info: a set of 1 or more scanner_property;
scanned_points: a set of 1 or more scanned_data_items which contains the point cloud data produced by the scanning operation.;
Formal propositions:
WR1: The scanned_points set shall not contain a scan_3d_model.
EXPRESS specification:
*)
ENTITY scanner_property
ABSTRACT SUPERTYPE
SUBTYPE OF (representation_item);
END_ENTITY;
(*
A scanner_basic_properties is a type of scanner_property, which represents the basic properties of a scanner.
NOTE More advanced properties of a scanner may be represented by further subtypes of scanner_property
EXPRESS specification:
*)
ENTITY scanner_basic_properties
SUBTYPE OF (scanner_property);
scanner_identification : label;
scanner_location : axis2_placement_3d;
scanner_uncertainty :
OPTIONAL
positive_length_measure;
END_ENTITY;
(*
Attribute definitions:
scanner_identification: a label which identifies the scanner;
scanner_location: a axis2_placement_3d which is the location and orientation of the scanner;
scanner_uncertainty: an optional positive_length_measure which gives the possible error in the coordinate values measured by the scanner.
EXPRESS specification:
*)
FUNCTION consistent_sizes (max : INTEGER; point_lists : LIST OF point_cloud_dataset) : BOOLEAN;
LOCAL ndatasets : INTEGER := SIZEOF(point_lists); result : BOOLEAN := TRUE; END_LOCAL; REPEAT i := 1 TO (ndatasets - 1); IF (SIZEOF(point_lists[i].point_coordinates) <> max) THEN result := FALSE; RETURN(result); END_IF; END_REPEAT; IF (SIZEOF(point_lists[ndatasets].point_coordinates) > max) THEN result := FALSE; RETURN(result); END_IF; RETURN(result);
END_FUNCTION;
(*
Argument definitions:
max: (input) the maxinum permitted size of any of the point coordinate lists;
point_lists: (input) A list of point_cloud_datasets whose sizes are to be checked.
*)
END_SCHEMA; -- scan_data_3d_shape_model_schema
(*
© ISO 2021 — All rights reserved