ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
E57SimpleData.h
Go to the documentation of this file.
1 /*
2  * E57Simple - public header of E57 Simple API for reading/writing .e57 files.
3  *
4  * Copyright (c) 2010 Stan Coleby (scoleby@intelisum.com)
5  * Copyright (c) 2020 PTC Inc.
6  *
7  * Permission is hereby granted, free of charge, to any person or organization
8  * obtaining a copy of the software and accompanying documentation covered by
9  * this license (the "Software") to use, reproduce, display, distribute,
10  * execute, and transmit the Software, and to prepare derivative works of the
11  * Software, and to permit third-parties to whom the Software is furnished to
12  * do so, all subject to the following:
13  *
14  * The copyright notices in the Software and this entire statement, including
15  * the above license grant, this restriction and the following disclaimer,
16  * must be included in all copies of the Software, in whole or in part, and
17  * all derivative works of the Software, unless such copies or derivative
18  * works are solely in the form of machine-executable object code generated by
19  * a source language processor.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  * FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
24  * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
25  * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
26  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27  * DEALINGS IN THE SOFTWARE.
28  */
29 
30 #pragma once
31 
33 
34 #include "E57Format.h"
35 
36 namespace e57
37 {
38 
40  constexpr double E57_NOT_SCALED_USE_FLOAT = 0.;
42  constexpr double E57_NOT_SCALED_USE_INTEGER = -1.;
43 
45  class ReaderImpl;
46  class WriterImpl;
48 
50  struct E57_DLL Translation
51  {
52  double x{ 0. };
53  double y{ 0. };
54  double z{ 0. };
55 
56  bool operator==( const Translation &rhs ) const
57  {
58  return ( x == rhs.x ) && ( y == rhs.y ) && ( z == rhs.z );
59  }
60  bool operator!=( const Translation &rhs ) const
61  {
62  return !operator==( rhs );
63  }
64 
66  {
67  return {};
68  }
69  };
70 
72  struct E57_DLL Quaternion
73  {
74  double w{ 0. };
75  double x{ 0. };
76  double y{ 0. };
77  double z{ 0. };
78 
79  bool operator==( const Quaternion &rhs ) const
80  {
81  return ( w == rhs.w ) && ( x == rhs.x ) && ( y == rhs.y ) && ( z == rhs.z );
82  }
83  bool operator!=( const Quaternion &rhs ) const
84  {
85  return !operator==( rhs );
86  }
87 
89  {
90  Quaternion identity;
91  identity.w = 1.;
92  return identity;
93  }
94  };
95 
97  struct E57_DLL RigidBodyTransform
98  {
101 
102  bool operator==( const RigidBodyTransform &rhs ) const
103  {
104  return ( rotation == rhs.rotation ) && ( translation == rhs.translation );
105  }
106  bool operator!=( const RigidBodyTransform &rhs ) const
107  {
108  return !operator==( rhs );
109  }
110 
112  {
114  }
115  };
116 
118  struct E57_DLL CartesianBounds
119  {
120  double xMinimum{ -E57_DOUBLE_MAX };
121  double xMaximum{ E57_DOUBLE_MAX };
122  double yMinimum{ -E57_DOUBLE_MAX };
123  double yMaximum{ E57_DOUBLE_MAX };
124  double zMinimum{ -E57_DOUBLE_MAX };
125  double zMaximum{ E57_DOUBLE_MAX };
126 
127  bool operator==( const CartesianBounds &rhs ) const
128  {
129  return ( xMinimum == rhs.xMinimum ) && ( xMaximum == rhs.xMaximum ) && ( yMinimum == rhs.yMinimum ) &&
130  ( yMaximum == rhs.yMaximum ) && ( zMinimum == rhs.zMinimum ) && ( zMaximum == rhs.zMaximum );
131  }
132  bool operator!=( const CartesianBounds &rhs ) const
133  {
134  return !operator==( rhs );
135  }
136  };
137 
139  struct E57_DLL SphericalBounds
140  {
141  SphericalBounds(); // constructor in the cpp to avoid exposing M_PI
142  double rangeMinimum;
143  double rangeMaximum;
146  double azimuthStart;
147  double azimuthEnd;
148 
149  bool operator==( const SphericalBounds &rhs ) const
150  {
151  return ( rangeMinimum == rhs.rangeMinimum ) && ( rangeMaximum == rhs.rangeMaximum ) &&
152  ( elevationMinimum == rhs.elevationMinimum ) && ( elevationMaximum == rhs.elevationMaximum ) &&
153  ( azimuthStart == rhs.azimuthStart ) && ( azimuthEnd == rhs.azimuthEnd );
154  }
155  bool operator!=( const SphericalBounds &rhs ) const
156  {
157  return !operator==( rhs );
158  }
159  };
160 
162  struct E57_DLL IndexBounds
163  {
164  int64_t rowMinimum{ 0 };
165  int64_t rowMaximum{ 0 };
166  int64_t columnMinimum{
167  0
168  };
169  int64_t columnMaximum{
170  0
171  };
172  int64_t returnMinimum{
173  0
174  };
175  int64_t returnMaximum{
176  0
177  };
178 
179  bool operator==( const IndexBounds &rhs ) const
180  {
181  return ( rowMinimum == rhs.rowMinimum ) && ( rowMaximum == rhs.rowMaximum ) &&
182  ( columnMinimum == rhs.columnMinimum ) && ( columnMaximum == rhs.columnMaximum ) &&
183  ( returnMinimum == rhs.returnMinimum ) && ( returnMaximum == rhs.returnMaximum );
184  }
185  bool operator!=( const IndexBounds &rhs ) const
186  {
187  return !operator==( rhs );
188  }
189  };
190 
192  struct E57_DLL IntensityLimits
193  {
194  double intensityMinimum{ 0. };
195  double intensityMaximum{ 0. };
196 
197  bool operator==( const IntensityLimits &rhs ) const
198  {
199  return ( intensityMinimum == rhs.intensityMinimum ) && ( intensityMaximum == rhs.intensityMaximum );
200  }
201  bool operator!=( const IntensityLimits &rhs ) const
202  {
203  return !operator==( rhs );
204  }
205  };
206 
208  struct E57_DLL ColorLimits
209  {
210  double colorRedMinimum{ 0. };
211  double colorRedMaximum{ 0. };
212  double colorGreenMinimum{ 0. };
213  double colorGreenMaximum{ 0. };
214  double colorBlueMinimum{ 0. };
215  double colorBlueMaximum{ 0. };
216 
217  bool operator==( const ColorLimits &rhs ) const
218  {
219  return ( colorRedMinimum == rhs.colorRedMinimum ) && ( colorRedMaximum == rhs.colorRedMaximum ) &&
220  ( colorGreenMinimum == rhs.colorGreenMinimum ) && ( colorGreenMaximum == rhs.colorGreenMaximum ) &&
221  ( colorBlueMinimum == rhs.colorBlueMinimum ) && ( colorBlueMaximum == rhs.colorBlueMaximum );
222  }
223  bool operator!=( const ColorLimits &rhs ) const
224  {
225  return !operator==( rhs );
226  }
227  };
228 
233  struct E57_DLL DateTime
234  {
235  double dateTimeValue{
236  0.
237  };
238  int32_t isAtomicClockReferenced{
239  0
240  };
242 
243  bool operator==( const DateTime &rhs ) const
244  {
245  return ( dateTimeValue == rhs.dateTimeValue ) && ( isAtomicClockReferenced == rhs.isAtomicClockReferenced );
246  }
247  bool operator!=( const DateTime &rhs ) const
248  {
249  return !operator==( rhs );
250  }
251  };
252 
254  struct E57_DLL E57Root
255  {
258  uint32_t versionMajor{ 1 };
259  uint32_t versionMinor{ 0 };
262  int64_t data3DSize{ 0 };
263  int64_t images2DSize{ 0 };
266  };
267 
269  struct E57_DLL LineGroupRecord
270  {
271  int64_t idElementValue{
272  0
273  };
274  int64_t startPointIndex{
275  0
276  };
277  int64_t pointCount{
278  0
279  };
284  };
285 
287  struct E57_DLL GroupingByLine
288  {
291  int64_t groupsSize{ 0 };
292  int64_t pointCountSize{ 0 };
293  };
294 
296  struct E57_DLL PointGroupingSchemes
297  {
299  };
300 
303  {
304  bool cartesianXField{ false };
305  bool cartesianYField{ false };
306  bool cartesianZField{ false };
307  bool cartesianInvalidStateField{
308  false
309  };
310 
311  bool sphericalRangeField{ false };
312  bool sphericalAzimuthField{ false };
313  bool sphericalElevationField{ false };
314  bool sphericalInvalidStateField{
315  false
316  };
317 
318  double pointRangeMinimum{
319  E57_FLOAT_MIN
320  };
323  double pointRangeMaximum{
324  E57_FLOAT_MAX
325  };
327  double pointRangeScaledInteger{
329  };
331 
332  double angleMinimum{
333  E57_FLOAT_MIN
334  };
336  double angleMaximum{
337  E57_FLOAT_MAX
338  };
340  double angleScaledInteger{
342  };
344 
345  bool rowIndexField{ false };
346  uint32_t rowIndexMaximum{ E57_UINT32_MAX };
348  bool columnIndexField{ false };
349  uint32_t columnIndexMaximum{
350  E57_UINT32_MAX
351  };
353 
354  bool returnIndexField{ false };
355  bool returnCountField{ false };
356  uint8_t returnMaximum{ E57_UINT8_MAX };
358 
359  bool timeStampField{ false };
360  bool isTimeStampInvalidField{ false };
361  double timeMaximum{
362  E57_DOUBLE_MAX
363  };
365  double timeMinimum{ E57_DOUBLE_MIN };
368  double timeScaledInteger{
370  };
372 
373  bool intensityField{ false };
374  bool isIntensityInvalidField{ false };
375  double intensityScaledInteger{
377  };
379 
380  bool colorRedField{ false };
381  bool colorGreenField{ false };
382  bool colorBlueField{ false };
383  bool isColorInvalidField{ false };
384 
385  bool normalX{ false };
386  bool normalY{ false };
387  bool normalZ{ false };
388  };
389 
391  struct E57_DLL Data3D
392  {
395  std::vector<ustring> originalGuids;
398 
406 
407  float temperature{ E57_FLOAT_MAX };
409  float relativeHumidity{ E57_FLOAT_MAX };
411  float atmosphericPressure{ E57_FLOAT_MAX };
413 
416 
428 
432 
433  int64_t pointsSize{ 0 };
435  };
436 
438  template <typename COORDTYPE = float> struct Data3DPointsData_t
439  {
440  COORDTYPE *cartesianX{
441  nullptr
442  };
443  COORDTYPE *cartesianY{
444  nullptr
445  };
446  COORDTYPE *cartesianZ{
447  nullptr
448  };
449  int8_t *cartesianInvalidState{ nullptr };
450 
451  float *intensity{ nullptr };
452  int8_t *isIntensityInvalid{ nullptr };
453 
454  uint8_t *colorRed{ nullptr };
455  uint8_t *colorGreen{ nullptr };
456  uint8_t *colorBlue{ nullptr };
457  int8_t *isColorInvalid{ nullptr };
458 
459  COORDTYPE *sphericalRange{
460  nullptr
461  };
462  COORDTYPE *sphericalAzimuth{
463  nullptr
464  };
465  COORDTYPE *sphericalElevation{
466  nullptr
467  };
468  int8_t *sphericalInvalidState{ nullptr };
469 
470  int32_t *rowIndex{ nullptr };
472  int32_t *columnIndex{
473  nullptr
474  };
476  int8_t *returnIndex{
477  nullptr
478  };
480  int8_t *returnCount{
481  nullptr
482  };
484 
485  double *timeStamp{
486  nullptr
487  };
489  int8_t *isTimeStampInvalid{ nullptr };
490 
491  // E57_EXT_surface_normals
492  float *normalX{ nullptr };
493  float *normalY{ nullptr };
494  float *normalZ{ nullptr };
495  };
496 
499 
502  {
503  int64_t jpegImageSize{ 0 };
504  int64_t pngImageSize{ 0 };
505  int64_t imageMaskSize{ 0 };
506  int32_t imageWidth{ 0 };
507  int32_t imageHeight{ 0 };
508 
509  bool operator==( const VisualReferenceRepresentation &rhs ) const
510  {
511  return ( jpegImageSize == rhs.jpegImageSize ) && ( pngImageSize == rhs.pngImageSize ) &&
512  ( imageMaskSize == rhs.imageMaskSize ) && ( imageWidth == rhs.imageWidth ) &&
513  ( imageHeight == rhs.imageHeight );
514  }
515  bool operator!=( const VisualReferenceRepresentation &rhs ) const
516  {
517  return !operator==( rhs );
518  }
519  };
520 
522  struct E57_DLL PinholeRepresentation
523  {
524  int64_t jpegImageSize{ 0 };
525  int64_t pngImageSize{ 0 };
526  int64_t imageMaskSize{ 0 };
527  int32_t imageWidth{ 0 };
528  int32_t imageHeight{ 0 };
529  double focalLength{ 0. };
530  double pixelWidth{ 0. };
531  double pixelHeight{ 0. };
532  double principalPointX{
533  0.
534  };
536  double principalPointY{ 0. };
537 
538  bool operator==( const PinholeRepresentation &rhs ) const
539  {
540  return ( jpegImageSize == rhs.jpegImageSize ) && ( pngImageSize == rhs.pngImageSize ) &&
541  ( imageMaskSize == rhs.imageMaskSize ) && ( imageWidth == rhs.imageWidth ) &&
542  ( imageHeight == rhs.imageHeight ) && ( focalLength == rhs.focalLength ) &&
543  ( pixelWidth == rhs.pixelWidth ) && ( pixelHeight == rhs.pixelHeight ) &&
544  ( principalPointX == rhs.principalPointX ) && ( principalPointY == rhs.principalPointY );
545  }
546  bool operator!=( const PinholeRepresentation &rhs ) const
547  {
548  return !operator==( rhs );
549  }
550  };
551 
553  struct E57_DLL SphericalRepresentation
554  {
555  int64_t jpegImageSize{ 0 };
556  int64_t pngImageSize{ 0 };
557  int64_t imageMaskSize{ 0 };
558  int32_t imageWidth{ 0 };
559  int32_t imageHeight{ 0 };
560  double pixelWidth{ 0. };
561  double pixelHeight{ 0. };
562 
563  bool operator==( const SphericalRepresentation &rhs ) const
564  {
565  return ( jpegImageSize == rhs.jpegImageSize ) && ( pngImageSize == rhs.pngImageSize ) &&
566  ( imageMaskSize == rhs.imageMaskSize ) && ( imageWidth == rhs.imageWidth ) &&
567  ( imageHeight == rhs.imageHeight ) && ( pixelWidth == rhs.pixelWidth ) &&
568  ( pixelHeight == rhs.pixelHeight );
569  }
570  bool operator!=( const SphericalRepresentation &rhs ) const
571  {
572  return !operator==( rhs );
573  }
574  };
575 
578  {
579  int64_t jpegImageSize{ 0 };
580  int64_t pngImageSize{ 0 };
581  int64_t imageMaskSize{ 0 };
582  int32_t imageWidth{ 0 };
583  int32_t imageHeight{ 0 };
584  double pixelWidth{ 0. };
585  double pixelHeight{ 0. };
586  double radius{ 0. };
588  double principalPointY{ 0. };
590 
591  bool operator==( const CylindricalRepresentation &rhs ) const
592  {
593  return ( jpegImageSize == rhs.jpegImageSize ) && ( pngImageSize == rhs.pngImageSize ) &&
594  ( imageMaskSize == rhs.imageMaskSize ) && ( imageWidth == rhs.imageWidth ) &&
595  ( imageHeight == rhs.imageHeight ) && ( pixelWidth == rhs.pixelWidth ) &&
596  ( pixelHeight == rhs.pixelHeight ) && ( radius == rhs.radius ) &&
597  ( principalPointY == rhs.principalPointY );
598  }
599  bool operator!=( const CylindricalRepresentation &rhs ) const
600  {
601  return !operator==( rhs );
602  }
603  };
604 
606  struct E57_DLL Image2D
607  {
612 
615 
619 
622 
632  };
633 
636  {
640  E57_PNG_IMAGE_MASK = 3
641  };
642 
645  {
650  E57_CYLINDRICAL = 4
651  };
652 
653 } // end namespace e57
header file for the E57 API
most of the functions follows Reader
Definition: ReaderImpl.h:37
most of the functions follows Writer
Definition: WriterImpl.h:37
constexpr bool operator==(const optional< T > &x, const optional< T > &y)
Definition: Optional.h:615
constexpr double E57_NOT_SCALED_USE_INTEGER
Indicates to use ScaledIntegerNode insterad of FloatNode in fields that can use both.
Definition: E57SimpleData.h:42
Image2DProjection
Identifies the representation for the image data.
@ E57_SPHERICAL
SphericalRepresentation for the image data.
@ E57_CYLINDRICAL
CylindricalRepresentation for the image data.
@ E57_NO_PROJECTION
No representation for the image data is present.
@ E57_VISUAL
VisualReferenceRepresentation for the image data.
@ E57_PINHOLE
PinholeRepresentation for the image data.
Data3DPointsData_t< float > Data3DPointsData
Image2DType
Identifies the format representation for the image data.
@ E57_JPEG_IMAGE
JPEG format image data.
@ E57_PNG_IMAGE
PNG format image data.
@ E57_NO_IMAGE
No image data.
@ E57_PNG_IMAGE_MASK
PNG format image mask.
constexpr double E57_NOT_SCALED_USE_FLOAT
Indicates to use FloatNode instead of ScaledIntegerNode in fields that can use both.
Definition: E57SimpleData.h:40
std::string ustring
UTF-8 encodeded Unicode string.
Definition: E57Format.h:54
Data3DPointsData_t< double > Data3DPointsData_d
Specifies an axis-aligned box in local cartesian coordinates.
double zMaximum
The maximum extent of the bounding box in the Z direction.
double xMaximum
The maximum extent of the bounding box in the X direction.
double yMinimum
The minimum extent of the bounding box in the Y direction.
bool operator==(const CartesianBounds &rhs) const
double zMinimum
The minimum extent of the bounding box in the Z direction.
double yMaximum
The maximum extent of the bounding box in the Y direction.
double xMinimum
The minimum extent of the bounding box in the X direction.
bool operator!=(const CartesianBounds &rhs) const
Specifies the limits for the value of red, green, and blue color that a sensor is capable of producin...
double colorGreenMinimum
The minimum producible green color value. Unit is unspecified.
double colorBlueMinimum
The minimum producible blue color value. Unit is unspecified.
double colorRedMaximum
The maximum producible red color value. Unit is unspecified.
double colorBlueMaximum
The maximum producible blue color value. Unit is unspecified.
double colorRedMinimum
The minimum producible red color value. Unit is unspecified.
bool operator!=(const ColorLimits &rhs) const
double colorGreenMaximum
The maximum producible green color value. Unit is unspecified.
bool operator==(const ColorLimits &rhs) const
Stores an image that is mapped from 3D using a cylindrical projection model.
bool operator==(const CylindricalRepresentation &rhs) const
double pixelHeight
The height of a pixel in the image (in meters). Shall be positive.
int32_t imageWidth
The image width (in pixels). Shall be positive.
int32_t imageHeight
The image height (in pixels). Shall be positive.
double pixelWidth
The width of a pixel in the image (in radians). Shall be positive.
int64_t jpegImageSize
Size of JPEG format image data in Blob.
bool operator!=(const CylindricalRepresentation &rhs) const
int64_t pngImageSize
Size of PNG format image data in Blob.
int64_t imageMaskSize
Size of PNG format image mask in Blob.
Stores pointers to user-provided buffers.
float * normalZ
The Z component of a surface normal vector (E57_EXT_surface_normals).
COORDTYPE * cartesianX
pointer to a buffer with the X coordinate (in meters) of the point in Cartesian coordinates
float * normalX
The X component of a surface normal vector (E57_EXT_surface_normals).
int8_t * isColorInvalid
Value = 0 if the color is considered valid, 1 otherwise.
int8_t * cartesianInvalidState
Value = 0 if the point is considered valid, 1 otherwise.
float * normalY
The Y component of a surface normal vector (E57_EXT_surface_normals).
COORDTYPE * sphericalAzimuth
pointer to a buffer with the Azimuth angle (in radians) of point in spherical coordinates
COORDTYPE * sphericalElevation
pointer to a buffer with the Elevation angle (in radians) of point in spherical coordinates
COORDTYPE * cartesianY
pointer to a buffer with the Y coordinate (in meters) of the point in Cartesian coordinates
int8_t * sphericalInvalidState
Value = 0 if the range is considered valid, 1 otherwise.
uint8_t * colorRed
pointer to a buffer with the Red color coefficient. Unit is unspecified
float * intensity
pointer to a buffer with the Point response intensity. Unit is unspecified
int8_t * isIntensityInvalid
Value = 0 if the intensity is considered valid, 1 otherwise.
COORDTYPE * sphericalRange
pointer to a buffer with the range (in meters) of points in spherical coordinates....
int8_t * isTimeStampInvalid
Value = 0 if the timeStamp is considered valid, 1 otherwise.
COORDTYPE * cartesianZ
pointer to a buffer with the Z coordinate (in meters) of the point in Cartesian coordinates
uint8_t * colorGreen
pointer to a buffer with the Green color coefficient. Unit is unspecified
uint8_t * colorBlue
pointer to a buffer with the Blue color coefficient. Unit is unspecified
Stores the top-level information for a single lidar scan.
DateTime acquisitionStart
The start date and time that the data was acquired.
RigidBodyTransform pose
DateTime acquisitionEnd
The end date and time that the data was acquired.
ustring guid
A globally unique identification string for the current version of the Data3D object.
CartesianBounds cartesianBounds
ustring sensorHardwareVersion
The version number for the sensor hardware at the time of data collection.
ustring sensorFirmwareVersion
std::vector< ustring > originalGuids
ustring name
A user-defined name for the Data3D.
ColorLimits colorLimits
IndexBounds indexBounds
The bounds of the row, column, and return number of all the points in this Data3D.
IntensityLimits intensityLimits
The limits for the value of signal intensity that the sensor is capable of producing.
SphericalBounds sphericalBounds
ustring sensorSerialNumber
The serial number for the sensor.
PointGroupingSchemes pointGroupingSchemes
The defined schemes that group points in different ways.
PointStandardizedFieldsAvailable pointFields
This defines the active fields used in the WritePoints function.
ustring description
A user-defined description of the Image.
ustring sensorModel
The model name or number for the sensor.
ustring sensorVendor
The name of the manufacturer for the sensor used to collect the points in this Data3D.
ustring sensorSoftwareVersion
The version number for the software used for the data collection.
Encodes date and time.
bool operator==(const DateTime &rhs) const
int32_t isAtomicClockReferenced
bool operator!=(const DateTime &rhs) const
double dateTimeValue
The time, in seconds, since GPS time was zero. This time specification may include fractions of a sec...
Stores the top-level information for the XML section of the file.
ustring formatName
Contains the string "ASTM E57 3D Image File".
ustring guid
A globally unique identification string for the current version of the file.
ustring e57LibraryVersion
The version identifier for the E57 file format library that wrote the file.
ustring coordinateMetadata
Information describing the Coordinate Reference System to be used for the file.
DateTime creationDateTime
Date/time that the file was created.
Stores a set of point groups organized by the rowIndex or columnIndex attribute of the PointRecord.
Stores an image from a camera.
ustring sensorVendor
The name of the manufacturer for the sensor used to collect the points in this Data3D.
ustring guid
A globally unique identification string for the current version of the Image2D object.
ustring description
A user-defined description of the Image2D.
ustring name
A user-defined name for the Image2D.
PinholeRepresentation pinholeRepresentation
Representation for an image using the pinhole camera projection model.
ustring sensorModel
The model name or number for the sensor.
SphericalRepresentation sphericalRepresentation
Representation for an image using the spherical camera projection model.
ustring associatedData3DGuid
RigidBodyTransform pose
ustring sensorSerialNumber
The serial number for the sensor.
CylindricalRepresentation cylindricalRepresentation
Representation for an image using the cylindrical camera projection model.
DateTime acquisitionDateTime
The date and time that the image was taken.
VisualReferenceRepresentation visualReferenceRepresentation
Stores the minimum and maximum of rowIndex, columnIndex, and returnIndex fields for a set of points.
int64_t rowMaximum
The maximum rowIndex value of any point represented by this IndexBounds object.
bool operator!=(const IndexBounds &rhs) const
int64_t returnMinimum
The minimum returnIndex value of any point represented by this IndexBounds object.
int64_t columnMinimum
The minimum columnIndex value of any point represented by this IndexBounds object.
int64_t columnMaximum
The maximum columnIndex value of any point represented by this IndexBounds object.
bool operator==(const IndexBounds &rhs) const
int64_t rowMinimum
The minimum rowIndex value of any point represented by this IndexBounds object.
int64_t returnMaximum
The maximum returnIndex value of any point represented by this IndexBounds object.
Specifies the limits for the value of signal intensity that a sensor is capable of producing.
bool operator==(const IntensityLimits &rhs) const
double intensityMaximum
The maximum producible intensity value. Unit is unspecified.
double intensityMinimum
The minimum producible intensity value. Unit is unspecified.
bool operator!=(const IntensityLimits &rhs) const
Stores information about a single group of points in a row or column.
CartesianBounds cartesianBounds
SphericalBounds sphericalBounds
Stores an image that is mapped from 3D using the pinhole camera projection model.
double principalPointY
The Y coordinate in the image of the principal point (in pixels).
int64_t imageMaskSize
Size of PNG format image mask in BlobNode.
int32_t imageHeight
The image height (in pixels). Shall be positive.
double focalLength
The camera's focal length (in meters). Shall be positive.
int64_t jpegImageSize
Size of JPEG format image data in BlobNode.
double pixelWidth
The width of the pixels in the camera (in meters). Shall be positive.
bool operator!=(const PinholeRepresentation &rhs) const
double pixelHeight
The height of the pixels in the camera (in meters). Shall be positive.
int32_t imageWidth
The image width (in pixels). Shall be positive.
int64_t pngImageSize
Size of PNG format image data in BlobNode.
bool operator==(const PinholeRepresentation &rhs) const
Supports the division of points within an Data3D into logical groupings.
GroupingByLine groupingByLine
Grouping information by row or column index.
Used to interrogate if standardized fields are available.
Represents a rigid body rotation.
Definition: E57SimpleData.h:73
double z
The k coefficient of the quaternion.
Definition: E57SimpleData.h:77
bool operator!=(const Quaternion &rhs) const
Definition: E57SimpleData.h:83
bool operator==(const Quaternion &rhs) const
Definition: E57SimpleData.h:79
static Quaternion identity()
Definition: E57SimpleData.h:88
double y
The j coefficient of the quaternion.
Definition: E57SimpleData.h:76
double x
The i coefficient of the quaternion.
Definition: E57SimpleData.h:75
double w
The real part of the quaternion. Shall be nonnegative.
Definition: E57SimpleData.h:74
Defines a rigid body transform in cartesian coordinates.
Definition: E57SimpleData.h:98
Translation translation
The translation point vector, t, of the transform.
Quaternion rotation
A unit quaternion representing the rotation, R, of the transform.
Definition: E57SimpleData.h:99
bool operator==(const RigidBodyTransform &rhs) const
bool operator!=(const RigidBodyTransform &rhs) const
static RigidBodyTransform identity()
Stores the bounds of some data in spherical coordinates.
double azimuthEnd
The ending azimuth angle defining the extent of the bounding region around the z axix.
bool operator!=(const SphericalBounds &rhs) const
double elevationMaximum
The maximum extent of the bounding region from the horizontal plane.
double rangeMinimum
The minimum extent of the bounding region in the r direction.
double rangeMaximum
The maximum extent of the bounding region in the r direction.
double elevationMinimum
The minimum extent of the bounding region from the horizontal plane.
bool operator==(const SphericalBounds &rhs) const
double azimuthStart
The starting azimuth angle defining the extent of the bounding region around the z axis.
Stores an image that is mapped from 3D using a spherical projection model.
int32_t imageHeight
The image height (in pixels). Shall be positive.
bool operator!=(const SphericalRepresentation &rhs) const
int64_t imageMaskSize
Size of PNG format image mask in BlobNode.
double pixelHeight
The height of a pixel in the image (in radians). Shall be positive.
int64_t jpegImageSize
Size of JPEG format image data in BlobNode.
double pixelWidth
The width of a pixel in the image (in radians). Shall be positive.
bool operator==(const SphericalRepresentation &rhs) const
int32_t imageWidth
The image width (in pixels). Shall be positive.
int64_t pngImageSize
Size of PNG format image data in BlobNode.
Defines a rigid body translation in Cartesian coordinates.
Definition: E57SimpleData.h:51
double y
The Y coordinate of the translation (in meters)
Definition: E57SimpleData.h:53
static Translation identity()
Definition: E57SimpleData.h:65
bool operator==(const Translation &rhs) const
Definition: E57SimpleData.h:56
double x
The X coordinate of the translation (in meters)
Definition: E57SimpleData.h:52
double z
The Z coordinate of the translation (in meters)
Definition: E57SimpleData.h:54
bool operator!=(const Translation &rhs) const
Definition: E57SimpleData.h:60
Stores an image that is to be used only as a visual reference.
int32_t imageHeight
The image height (in pixels). Shall be positive.
int64_t imageMaskSize
Size of PNG format image mask in BlobNode.
int32_t imageWidth
The image width (in pixels). Shall be positive.
int64_t jpegImageSize
Size of JPEG format image data in BlobNode.
bool operator!=(const VisualReferenceRepresentation &rhs) const
int64_t pngImageSize
Size of PNG format image data in BlobNode.
bool operator==(const VisualReferenceRepresentation &rhs) const