Application module: Scan data 3D shape ISO/TS 10303-1831:2019(E)
© ISO

Cover page
Table of contents
Copyright
Foreword
Introduction
1 Scope
2 Normative references
3 Terms, definitions and abbreviated terms
    3.1 Terms and definitions
    3.2 Abbreviated terms

4 Information requirements
   4.1 Required AM ARMs
   4.2 ARM type definition
   4.3 ARM entity definitions
   4.4 ARM function definition
5 Module interpreted model
   5.1 Mapping specification
   5.2 MIM EXPRESS short listing

A MIM short names
B Information object registration
C ARM EXPRESS-G   EXPRESS-G
D MIM EXPRESS-G   EXPRESS-G
E Computer interpretable listings
F Change history
Bibliography
Index

4 Information requirements

This clause specifies the information requirements for the Scan data 3D shape application module. The information requirements are specified as the Application Reference Model (ARM) of this application module.

NOTE 1  A graphical representation of the information requirements is given in Annex C.

NOTE 2  The mapping specification is specified in 5.1. It shows how the information requirements are met by using common resources and constructs defined or imported in the MIM schema of this application module.

This clause defines the information requirements to which implementations shall conform using the EXPRESS language as defined in ISO 10303-11. The following begins the Scan_data_3d_shape_arm schema and identifies the necessary external references.

EXPRESS specification:

*)
SCHEMA Scan_data_3d_shape_arm;
(*

4.1 Required AM ARMs

The following EXPRESS interface statements specify the elements imported from the ARMs of other application modules.

EXPRESS specification:

*)
USE FROM Elemental_geometric_shape_arm;    --  ISO/TS 10303-1004

REFERENCE FROM Foundation_representation_arm    --  ISO/TS 10303-1006
  (using_representations);
(*

NOTE 1   The schemas referenced above are specified in the following part of ISO 10303:

Elemental_geometric_shape_arm ISO/TS 10303-1004
Foundation_representation_arm ISO/TS 10303-1006

NOTE 2   See Annex C, Figures C.1and C.2 for a graphical representation of this schema.

4.2 ARM type definition

This subclause specifies the ARM type for this application module. The ARM type and definition is specified below.

4.2.1 point_cloud_set_or_superset   EXPRESS-G

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;
(*

4.3 ARM entity definitions

This subclause specifies the ARM entities for this module. Each ARM application entity is an atomic element that embodies a unique application concept and contains attributes specifying the data elements of the entity. The ARM entities and definitions are specified below.

4.3.1 Point_cloud_dataset   EXPRESS-GMapping table

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.

EXAMPLE    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 as context a Geometric_coordinate_space.

4.3.2 Point_cloud_dataset_with_colours   EXPRESS-GMapping table

A Point_cloud_dataset_with_colours is a type of Point_cloud_dataset, which has a colour defined at each point of the dataset.

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.

4.3.3 Point_cloud_dataset_with_intensities   EXPRESS-GMapping table

A Point_cloud_dataset_with_intensities is a type of Point_cloud_dataset which has an intensity defined at each point of the dataset.

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 the intensities list shall be the same as the size of the point_coordinates list.

4.3.4 Point_cloud_dataset_with_normals   EXPRESS-GMapping table

A Point_cloud_dataset_with_normals is a type of Point_cloud_dataset which has a normal defined at each point of the dataset.

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 the normals list shall be the same as the size of the point_coordinates list.

4.3.5 Point_cloud_superdataset   EXPRESS-GMapping table

A Point_cloud_superdataset is a type of Scanned_data_item which contains a list of Point_cloud_datasets. Each of the Point_cloud_datasets, except the last, is required to contain the same number of points.

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_point_clouds(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 two 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_point_clouds function.

4.3.6 Scan_3d_model   EXPRESS-GMapping table

A Scan_3d_model is a type of Scanned_data_item which represents the data produced by scanning a 3D shape. It contains scanner properties and a set of Scanned_data_items. Each of the Scanned_data_items includes point cloud data.

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_ARM.SCAN_3D_MODEL' IN TYPEOF(tmp))) = 0;
END_ENTITY;
(*

Attribute definitions:

scanner_info: a set of one or more Scanner_property.

scanned_points: a set of one 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.

4.3.7 Scan_data_shape_representation   EXPRESS-GMapping table

A Scan_data_shape_representation is a type of Geometric_model in which the geometry of a 3D shape is represented by a set of point cloud data produced by a scanner.

EXPRESS specification:

*)
ENTITY Scan_data_shape_representation
  SUBTYPE OF (Geometric_model);
  SELF\Representation.items : SET[1:?] OF Scanned_data_item;
END_ENTITY;
(*

Attribute definitions:

items: the Scanned_data_items defining the shape.

4.3.8 Scanned_data_item   EXPRESS-GMapping table

A Scanned_data_item is a type of Detailed_geometric_model_element 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 (Detailed_geometric_model_element);
WHERE
  WR1: SIZEOF (QUERY (using_rep <* using_representations (SELF) | NOT ('SCAN_DATA_3D_SHAPE_ARM.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.

4.3.9 Scanner_basic_properties   EXPRESS-GMapping table

A Scanner_basic_properties is a type of Scanner_property which represents the basic properties of a scanner.

NOTE 1   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 : Axis_placement_3d;
  scanner_uncertainty : OPTIONAL length_measure;
WHERE
  WR1: (NOT (EXISTS(scanner_uncertainty))) OR (scanner_uncertainty > 0.0);
END_ENTITY;
(*

Attribute definitions:

scanner_identification: a label which identifies the scanner.

scanner_location: an 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.

Formal propositions:

WR1: The scanner_uncertainty, if present, shall be positive.

4.3.10 Scanner_property   EXPRESS-GMapping table

A Scanner_property is a type of Representation_item which represents one or more properties of a scanner.

EXPRESS specification:

*)
ENTITY Scanner_property
  ABSTRACT SUPERTYPE
  SUBTYPE OF (Representation_item);
END_ENTITY;
(*

4.3.11 Triangulated_point_cloud_dataset   EXPRESS-GMapping table

A Triangulated_point_cloud_dataset is a type of Scanned_data_item in which the points of the dataset are arranged into triangles.

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 triangles.

triangles: a list of integer triples defining the locations in points of the coordinate values for the three 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 Point_cloud_dataset in which to find the coordinates position. The remainder from this division is then the required address.

EXAMPLE    In the case of a super dataset, 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.

4.4 ARM function definition

This subclause specifies the ARM function for this module. The ARM function and definition is specified below.

4.4.1 consistent_sizes_point_clouds

The consistent_sizes_point_clouds function checks the sizes of the point_coordinates lists of the input Point_cloud_datasets and returns true if all but the last are of size max and the last has a size which is not greater than max,

EXPRESS specification:

*)
FUNCTION consistent_sizes_point_clouds (max : INTEGER; point_lists : LIST[0:?] 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 maximum 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_arm
(*


© ISO 2019 — All rights reserved