ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvCone.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 
35  PointCoordinateType topRadius,
37  PointCoordinateType xOff = 0,
38  PointCoordinateType yOff = 0,
39  const ccGLMatrix* transMat = 0,
40  QString name = QString("Cone"),
41  unsigned precision = DEFAULT_DRAWING_PRECISION);
42 
44 
46  ccCone(QString name = QString("Cone"));
47 
49  virtual CV_CLASS_ENUM getClassID() const override { return CV_TYPES::CONE; }
50 
52  inline PointCoordinateType getHeight() const { return m_height; }
54 
58 
61  return m_bottomRadius;
62  }
64 
67  virtual void setBottomRadius(PointCoordinateType radius);
68 
70  inline PointCoordinateType getTopRadius() const { return m_topRadius; }
71 
73 
76  virtual void setTopRadius(PointCoordinateType radius);
77 
79  virtual CCVector3 getBottomCenter() const;
81  virtual CCVector3 getTopCenter() const;
82 
84  virtual CCVector3 getSmallCenter() const;
86  virtual CCVector3 getLargeCenter() const;
87 
92 
94  virtual bool isSnoutMode() const { return (m_xOff != 0 || m_yOff != 0); }
95 
96  // inherited from ccGenericPrimitive
97  virtual QString getTypeName() const override { return "Cone"; }
98  virtual bool hasDrawingPrecision() const override { return true; }
99  virtual ccGenericPrimitive* clone() const override;
100 
101 protected:
102  // inherited from ccGenericPrimitive
103  bool toFile_MeOnly(QFile& out, short dataVersion) const override;
104  short minimumFileVersion_MeOnly() const override;
105  bool fromFile_MeOnly(QFile& in,
106  short dataVersion,
107  int flags,
108  LoadedIDMap& oldToNewIDMap) override;
109  virtual bool buildUp() override;
110 
113 
116 
119 
122 
125 };
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
int height
Cone (primitive)
Definition: ecvCone.h:16
PointCoordinateType getTopRadius() const
Returns top radius.
Definition: ecvCone.h:70
bool fromFile_MeOnly(QFile &in, short dataVersion, int flags, LoadedIDMap &oldToNewIDMap) override
Loads own object data.
virtual CCVector3 getLargeCenter() const
Returns cone axis end point associated with whichever radii is larger.
bool toFile_MeOnly(QFile &out, short dataVersion) const override
Save own object data.
virtual bool hasDrawingPrecision() const override
Whether drawing is dependent on 'precision' parameter.
Definition: ecvCone.h:98
virtual CV_CLASS_ENUM getClassID() const override
Returns class ID.
Definition: ecvCone.h:49
virtual PointCoordinateType getLargeRadius() const
Returns whichever cone radii is larger.
PointCoordinateType m_xOff
Displacement of axes along X-axis (Snout mode)
Definition: ecvCone.h:118
short minimumFileVersion_MeOnly() const override
PointCoordinateType m_height
Height.
Definition: ecvCone.h:124
ccCone(QString name=QString("Cone"))
Simplified constructor.
virtual bool buildUp() override
Builds primitive.
virtual CCVector3 getTopCenter() const
Returns cone axis top end point after applying transformation.
PointCoordinateType getHeight() const
Returns height.
Definition: ecvCone.h:52
virtual PointCoordinateType getSmallRadius() const
Returns whichever cone radii is smaller.
virtual bool isSnoutMode() const
Returns true if the Cone was created in snout mode.
Definition: ecvCone.h:94
virtual void setTopRadius(PointCoordinateType radius)
Sets top radius.
virtual CCVector3 getSmallCenter() const
Returns cone axis end point associated with whichever radii is smaller.
virtual ccGenericPrimitive * clone() const override
Clones primitive.
PointCoordinateType m_topRadius
Top radius.
Definition: ecvCone.h:115
PointCoordinateType m_bottomRadius
Bottom radius.
Definition: ecvCone.h:112
PointCoordinateType getBottomRadius() const
Returns bottom radius.
Definition: ecvCone.h:60
void setHeight(PointCoordinateType height)
Sets height.
virtual CCVector3 getBottomCenter() const
Returns cone axis bottom end point after applying transformation.
PointCoordinateType m_yOff
Displacement of axes along Y-axis (Snout mode)
Definition: ecvCone.h:121
ccCone(PointCoordinateType bottomRadius, PointCoordinateType topRadius, PointCoordinateType height, PointCoordinateType xOff=0, PointCoordinateType yOff=0, const ccGLMatrix *transMat=0, QString name=QString("Cone"), unsigned precision=DEFAULT_DRAWING_PRECISION)
Default constructor.
virtual void setBottomRadius(PointCoordinateType radius)
Sets bottom radius.
virtual QString getTypeName() const override
Returns type name (sphere, cylinder, etc.)
Definition: ecvCone.h:97
Float version of ccGLMatrixTpl.
Definition: ecvGLMatrix.h:19
Generic primitive interface.
QMultiMap< unsigned, unsigned > LoadedIDMap
Map of loaded unique IDs (old ID --> new ID)
@ CONE
Definition: CVTypes.h:123