/**
* PointSample describes the position and attributes of a point in the cloud. Note: Attributes are included
* in this struct because we get them for free on the wire due to word alignment.
*/
/**
* Position relative to the cloud origin, in arbitrary point units. Reference PointSampleConfig
* to determine the meaning of the elements in this vector. These are signed short values so
* in order to exploit the full 16 bits of resolution, data should be scaled to
* a range of -32768 to 32767. If 15 bits of resolution is adequate, data can be scaled to a
* range of 0 to 32767 for computational efficiency on the sending side.
* @see PointSampleXyzMode
*/
/**
* Particle attributes (e.g., intensity).
* @see PointSampleAttributeMode
*/
class PointCloudSampleTypeSupport;
class PointCloudSampleDataWriter;
class PointCloudSampleDataReader;
struct PointCloudSampleSeq;
/** PointCloudSample message sends data in point cloud format. */
#if RTI_DDS_VERSION_MAJOR < 4 || (RTI_DDS_VERSION_MAJOR == 4 && RTI_DDS_VERSION_MINOR < 5) || (RTI_DDS_VERSION_MAJOR == 4 && RTI_DDS_VERSION_MINOR == 5 && RTI_DDS_VERSION_RELEASE != 'f' )
typedef PointCloudSampleTypeSupport TypeSupport;
typedef PointCloudSampleDataWriter DataWriter;
typedef PointCloudSampleDataReader DataReader;
typedef PointCloudSampleSeq Seq;
#endif
typedef PointCloudSample Type;
/** Origin of points (i.e., offset from frame 0,0,0 in meters). */
/**
* Per-element scale factor to convert point units to a meaningful value. Following conversion,
* spatial coordinates should be in METERS and angular values should be in RADIANS.
*/
/** Sequence of points. */
/**
* Descriptions of rows from the same scan-line. If all points belong to the same point cloud,
*
* <code>
* rowLengths.length() == 0 (or rowLengths.length()==1 && rowLengths[0] == samples.length() )
* </code>
*
* Otherwise,
*
* <code>
* SUM(rowLengths) == samples.length().
* </code>
*/