ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvQuadric.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 "ecvGenericPrimitive.h"
12 
14 
17 public:
19 
21  static const unsigned DEFAULT_DRAWING_PRECISION = 24;
22 
24 
33  ccQuadric(CCVector2 minCorner,
34  CCVector2 maxCorner,
35  const PointCoordinateType eq[6],
36  const Tuple3ub* dims = 0,
37  const ccGLMatrix* transMat = 0,
38  QString name = QString("Quadric"),
39  unsigned precision = DEFAULT_DRAWING_PRECISION);
40 
42 
44  ccQuadric(QString name = QString("Quadric"));
45 
47  virtual CV_CLASS_ENUM getClassID() const override {
48  return CV_TYPES::QUADRIC;
49  }
50 
51  // inherited from ccGenericPrimitive
52  virtual QString getTypeName() const override { return "Quadric"; }
53  virtual bool hasDrawingPrecision() const override { return true; }
54  virtual ccGenericPrimitive* clone() const override;
55 
56  // inherited from ccHObject
57  virtual ccBBox getOwnFitBB(ccGLMatrix& trans) override;
58 
60  const CCVector2& getMinCorner() const { return m_minCorner; }
62  const CCVector2& getMaxCorner() const { return m_maxCorner; }
63 
65  inline const PointCoordinateType* getEquationCoefs() const { return m_eq; }
66 
69  inline const Tuple3ub& getEquationDims() const { return m_dims; }
70 
72 
78  CCVector3& Q) const;
79 
81  QString getEquationString() const;
82 
84 
89  double* rms /*=0*/);
90 
91 protected:
92  // inherited from ccGenericPrimitive
93  bool toFile_MeOnly(QFile& out, short dataVersion) const override;
94  short minimumFileVersion_MeOnly() const override;
95  bool fromFile_MeOnly(QFile& in,
96  short dataVersion,
97  int flags,
98  LoadedIDMap& oldToNewIDMap) override;
99  virtual bool buildUp() override;
100 
105 
108 
111 
116 };
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
Bounding box structure.
Definition: ecvBBox.h:25
Float version of ccGLMatrixTpl.
Definition: ecvGLMatrix.h:19
Generic primitive interface.
Quadric (primitive)
Definition: ecvQuadric.h:16
CCVector2 m_maxCorner
Max corner.
Definition: ecvQuadric.h:104
const Tuple3ub & getEquationDims() const
Definition: ecvQuadric.h:69
const CCVector2 & getMaxCorner() const
Returns the quadric max corner.
Definition: ecvQuadric.h:62
virtual CV_CLASS_ENUM getClassID() const override
Returns class ID.
Definition: ecvQuadric.h:47
short minimumFileVersion_MeOnly() const override
PointCoordinateType m_minZ
Min height.
Definition: ecvQuadric.h:113
CCVector2 m_minCorner
Min corner.
Definition: ecvQuadric.h:102
virtual ccBBox getOwnFitBB(ccGLMatrix &trans) override
Returns best-fit bounding-box (if available)
ccQuadric(CCVector2 minCorner, CCVector2 maxCorner, const PointCoordinateType eq[6], const Tuple3ub *dims=0, const ccGLMatrix *transMat=0, QString name=QString("Quadric"), unsigned precision=DEFAULT_DRAWING_PRECISION)
Default constructor.
bool fromFile_MeOnly(QFile &in, short dataVersion, int flags, LoadedIDMap &oldToNewIDMap) override
Loads own object data.
virtual ccGenericPrimitive * clone() const override
Clones primitive.
Tuple3ub m_dims
Dimension indexes.
Definition: ecvQuadric.h:110
QString getEquationString() const
Returns the quadric equation coefficients as a string.
const PointCoordinateType * getEquationCoefs() const
Returns the quadric equation coefficients.
Definition: ecvQuadric.h:65
virtual bool buildUp() override
Builds primitive.
ccQuadric(QString name=QString("Quadric"))
Simplified constructor.
bool toFile_MeOnly(QFile &out, short dataVersion) const override
Save own object data.
virtual QString getTypeName() const override
Returns type name (sphere, cylinder, etc.)
Definition: ecvQuadric.h:52
PointCoordinateType m_maxZ
Max height.
Definition: ecvQuadric.h:115
const CCVector2 & getMinCorner() const
Returns the quadric min corner.
Definition: ecvQuadric.h:60
PointCoordinateType projectOnQuadric(const CCVector3 &P, CCVector3 &Q) const
Projects a 3D point in the quadric coordinate system.
static ccQuadric * Fit(cloudViewer::GenericIndexedCloudPersist *cloud, double *rms)
Fits a quadric primitive on a cloud.
virtual bool hasDrawingPrecision() const override
Whether drawing is dependent on 'precision' parameter.
Definition: ecvQuadric.h:53
QMultiMap< unsigned, unsigned > LoadedIDMap
Map of loaded unique IDs (old ID --> new ID)
A generic 3D point cloud with index-based and presistent access to points.
@ QUADRIC
Definition: CVTypes.h:131