ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvTorus.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 
36  PointCoordinateType outsideRadius,
37  double angle_rad = 2.0 * M_PI,
38  bool rectangularSection = false,
39  PointCoordinateType rectSectionHeight = 0,
40  const ccGLMatrix* transMat = 0,
41  QString name = QString("Torus"),
42  unsigned precision = DEFAULT_DRAWING_PRECISION);
43 
45 
47  ccTorus(QString name = QString("Torus"));
48 
50  virtual CV_CLASS_ENUM getClassID() const override {
51  return CV_TYPES::TORUS;
52  }
53 
54  // inherited from ccGenericPrimitive
55  virtual QString getTypeName() const override { return "Torus"; }
56  virtual bool hasDrawingPrecision() const override { return true; }
57  virtual ccGenericPrimitive* clone() const override;
58 
61  return m_insideRadius;
62  }
65  return m_outsideRadius;
66  }
70  return m_rectSectionHeight;
71  }
74  inline bool getRectSection() const { return m_rectSection; }
76  inline double getAngleRad() const { return m_angle_rad; }
77 
78 protected:
79  // inherited from ccGenericPrimitive
80  bool toFile_MeOnly(QFile& out, short dataVersion) const override;
81  short minimumFileVersion_MeOnly() const override;
82  bool fromFile_MeOnly(QFile& in,
83  short dataVersion,
84  int flags,
85  LoadedIDMap& oldToNewIDMap) override;
86  virtual bool buildUp() override;
87 
90 
93 
96 
99 
101  double m_angle_rad;
102 };
constexpr double M_PI
Pi.
Definition: CVConst.h:19
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
Float version of ccGLMatrixTpl.
Definition: ecvGLMatrix.h:19
Generic primitive interface.
QMultiMap< unsigned, unsigned > LoadedIDMap
Map of loaded unique IDs (old ID --> new ID)
Torus (primitive)
Definition: ecvTorus.h:16
double getAngleRad() const
Returns the torus subtended angle (in radians)
Definition: ecvTorus.h:76
PointCoordinateType getInsideRadius() const
Returns the torus inside radius.
Definition: ecvTorus.h:60
ccTorus(PointCoordinateType insideRadius, PointCoordinateType outsideRadius, double angle_rad=2.0 *M_PI, bool rectangularSection=false, PointCoordinateType rectSectionHeight=0, const ccGLMatrix *transMat=0, QString name=QString("Torus"), unsigned precision=DEFAULT_DRAWING_PRECISION)
Default constructor.
virtual bool hasDrawingPrecision() const override
Whether drawing is dependent on 'precision' parameter.
Definition: ecvTorus.h:56
bool toFile_MeOnly(QFile &out, short dataVersion) const override
Save own object data.
double m_angle_rad
Subtended angle (in radians)
Definition: ecvTorus.h:101
PointCoordinateType m_insideRadius
Inside radius.
Definition: ecvTorus.h:89
ccTorus(QString name=QString("Torus"))
Simplified constructor.
PointCoordinateType m_rectSectionHeight
Rectangular section height (along Y-axis) if applicable.
Definition: ecvTorus.h:98
bool fromFile_MeOnly(QFile &in, short dataVersion, int flags, LoadedIDMap &oldToNewIDMap) override
Loads own object data.
virtual QString getTypeName() const override
Returns type name (sphere, cylinder, etc.)
Definition: ecvTorus.h:55
virtual CV_CLASS_ENUM getClassID() const override
Returns class ID.
Definition: ecvTorus.h:50
bool m_rectSection
Whether torus has a rectangular (true) or circular (false) section.
Definition: ecvTorus.h:95
PointCoordinateType getRectSectionHeight() const
Definition: ecvTorus.h:69
virtual bool buildUp() override
Builds primitive.
PointCoordinateType m_outsideRadius
Outside radius.
Definition: ecvTorus.h:92
PointCoordinateType getOutsideRadius() const
Returns the torus outside radius.
Definition: ecvTorus.h:64
short minimumFileVersion_MeOnly() const override
bool getRectSection() const
Definition: ecvTorus.h:74
virtual ccGenericPrimitive * clone() const override
Clones primitive.
@ TORUS
Definition: CVTypes.h:122