ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvSensor.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 // Local
11 #include "ecvColorTypes.h"
13 
18 };
19 
21 
28 public:
30  ccSensor(QString name);
31 
33  ccSensor(const ccSensor& sensor);
34 
35  // inherited from ccHObject
36  virtual CV_CLASS_ENUM getClassID() const override {
37  return CV_TYPES::SENSOR;
38  }
39  virtual bool isSerializable() const override { return true; }
40 
41  virtual void clearDrawings();
43 
45 
48  virtual CC_SENSOR_TYPE getType() const { return UNKNOWN_SENSOR; }
49 
51 
58  virtual inline unsigned char checkVisibility(const CCVector3& P) const {
59  return POINT_VISIBLE;
60  }
61 
63  ccIndexedTransformationBuffer* getPositions() { return m_posBuffer; }
64 
67  m_posBuffer = positions;
68  }
69 
71 
74  bool addPosition(ccGLMatrix& trans, double index);
75 
78 
83  double index) const;
84 
87 
90 
92  bool getActiveAbsoluteRotation(ccGLMatrix& rotation) const;
93 
96 
99  virtual void setRigidTransformation(const ccGLMatrix& mat) {
100  m_rigidTransformation = mat;
101  }
102 
106  return m_rigidTransformation;
107  }
108 
111  virtual const ccGLMatrix& getRigidTransformation() const {
112  return m_rigidTransformation;
113  }
114 
116  void getIndexBounds(double& minIndex, double& maxIndex) const;
117 
119  double getActiveIndex() const { return m_activeIndex; }
120 
122  void setActiveIndex(double index) { m_activeIndex = index; }
123 
125  void setGraphicScale(PointCoordinateType scale) { m_scale = scale; }
126 
128  PointCoordinateType getGraphicScale() const { return m_scale; }
129 
130  void setFrameColor(ecvColor::Rgb color) { m_color = color; }
131  const ecvColor::Rgb& getFrameColor() const { return m_color; }
132 
134 
137  virtual bool applyViewport();
138 
139  // inherited from ccHObject
140  virtual void applyGLTransformation(const ccGLMatrix& trans) override;
141 
142 protected:
143  // inherited from ccHObject
144  bool toFile_MeOnly(QFile& out, short dataVersion) const override;
145  short minimumFileVersion_MeOnly() const override;
146  bool fromFile_MeOnly(QFile& in,
147  short dataVersion,
148  int flags,
149  LoadedIDMap& oldToNewIDMap) override;
150 
153 
155 
159 
162 
164 
167 
170 };
constexpr unsigned char POINT_VISIBLE
Definition: CVConst.h:92
float PointCoordinateType
Type of the coordinates of a (N-D) point.
Definition: CVTypes.h:16
int64_t CV_CLASS_ENUM
Type of object type flags (64 bits)
Definition: CVTypes.h:97
#define CV_DB_LIB_API
Definition: CV_db.h:15
std::string name
math::float4 color
Float version of ccGLMatrixTpl.
Definition: ecvGLMatrix.h:19
Hierarchical CLOUDVIEWER Object.
Definition: ecvHObject.h:25
Generic sensor interface.
Definition: ecvSensor.h:27
short minimumFileVersion_MeOnly() const override
bool fromFile_MeOnly(QFile &in, short dataVersion, int flags, LoadedIDMap &oldToNewIDMap) override
Loads own object data.
ccIndexedTransformationBuffer * getPositions()
Returns associated positions.
Definition: ecvSensor.h:63
virtual CC_SENSOR_TYPE getType() const
Returns the sensor type.
Definition: ecvSensor.h:48
virtual bool isSerializable() const override
Returns whether object is serializable of not.
Definition: ecvSensor.h:39
PointCoordinateType m_scale
Sensor graphic representation scale.
Definition: ecvSensor.h:169
PointCoordinateType getGraphicScale() const
Returns the sensor graphic representation scale.
Definition: ecvSensor.h:128
ccSensor(QString name)
Default constructor.
bool addPosition(ccGLMatrix &trans, double index)
Adds a new position (shortcut)
bool getActiveAbsoluteCenter(CCVector3 &vec) const
Gets currently active absolute position.
virtual unsigned char checkVisibility(const CCVector3 &P) const
Returns the "visibility type" of a point.
Definition: ecvSensor.h:58
bool toFile_MeOnly(QFile &out, short dataVersion) const override
Save own object data.
virtual ccGLMatrix & getRigidTransformation()
Definition: ecvSensor.h:105
virtual void hideShowDrawings(CC_DRAW_CONTEXT &context)
ccIndexedTransformationBuffer * m_posBuffer
Positions buffer (optional)
Definition: ecvSensor.h:152
void setPositions(ccIndexedTransformationBuffer *positions)
Sets associated positions.
Definition: ecvSensor.h:66
void setFrameColor(ecvColor::Rgb color)
Definition: ecvSensor.h:130
virtual void clearDrawings()
ccGLMatrix m_rigidTransformation
Rigid transformation between this sensor and its associated positions.
Definition: ecvSensor.h:158
virtual void applyGLTransformation(const ccGLMatrix &trans) override
Applies a GL transformation to the entity.
double m_activeIndex
Active index (for displayed position, etc.)
Definition: ecvSensor.h:161
bool getAbsoluteTransformation(ccIndexedTransformation &trans, double index) const
ccSensor(const ccSensor &sensor)
Copy constructor.
void getIndexBounds(double &minIndex, double &maxIndex) const
Gets index boundaries (shortcut)
bool getActiveAbsoluteTransformation(ccIndexedTransformation &trans) const
Gets currently active absolute transformation.
ecvColor::Rgb m_color
Color of the sensor.
Definition: ecvSensor.h:166
double getActiveIndex() const
Sets currently active index (displayed position, etc.)
Definition: ecvSensor.h:119
virtual bool applyViewport()
Apply sensor 'viewport' to a 3D view.
virtual void setRigidTransformation(const ccGLMatrix &mat)
Definition: ecvSensor.h:99
virtual CV_CLASS_ENUM getClassID() const override
Returns class ID.
Definition: ecvSensor.h:36
void setActiveIndex(double index)
Sets currently active index (displayed position, etc.)
Definition: ecvSensor.h:122
void setGraphicScale(PointCoordinateType scale)
Sets the sensor graphic representation scale.
Definition: ecvSensor.h:125
bool getActiveAbsoluteRotation(ccGLMatrix &rotation) const
Gets currently active rotation matrix (without translation)
const ecvColor::Rgb & getFrameColor() const
Definition: ecvSensor.h:131
virtual const ccGLMatrix & getRigidTransformation() const
Definition: ecvSensor.h:111
QMultiMap< unsigned, unsigned > LoadedIDMap
Map of loaded unique IDs (old ID --> new ID)
RGB color structure.
Definition: ecvColorTypes.h:49
CC_SENSOR_TYPE
Sensor types.
Definition: ecvSensor.h:15
@ GROUND_BASED_LIDAR
Definition: ecvSensor.h:17
@ UNKNOWN_SENSOR
Definition: ecvSensor.h:16
ImGuiContext * context
Definition: Window.cpp:76
@ SENSOR
Definition: CVTypes.h:116
Display context.