1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
//##########################################################################
//# #
//# CLOUDCOMPARE #
//# #
//# This program is free software; you can redistribute it and/or modify #
//# it under the terms of the GNU General Public License as published by #
//# the Free Software Foundation; version 2 or later of the License. #
//# #
//# This program is distributed in the hope that it will be useful, #
//# but WITHOUT ANY WARRANTY; without even the implied warranty of #
//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
//# GNU General Public License for more details. #
//# #
//# COPYRIGHT: EDF R&D / TELECOM ParisTech (ENST-TSI) #
//# #
//##########################################################################
#ifndef CC_SPHERE_PRIMITIVE_HEADER
#define CC_SPHERE_PRIMITIVE_HEADER
//Local
#include "ccGenericPrimitive.h"
//! Sphere (primitive)
/** 3D sphere primitive
**/
class QCC_DB_LIB_API ccSphere : public ccGenericPrimitive
{
public:
//! Default constructor
/** \param radius sphere radius
\param transMat optional 3D transformation (can be set afterwards with ccDrawableObject::setGLTransformation)
\param name name
\param precision drawing precision (angular step = 360/precision)
\param uniqueID unique ID (handle with care)
**/
ccSphere( PointCoordinateType radius,
const ccGLMatrix* transMat = 0,
QString name = QString("Sphere"),
unsigned precision = 24,
unsigned uniqueID = ccUniqueIDGenerator::InvalidUniqueID);
//! Simplified constructor
/** For ccHObject factory only!
**/
ccSphere(QString name = QString("Sphere"));
//! Returns class ID
virtual CC_CLASS_ENUM getClassID() const override { return CC_TYPES::SPHERE; }
//inherited from ccGenericPrimitive
virtual QString getTypeName() const override { return "Sphere"; }
virtual bool hasDrawingPrecision() const override { return true; }
virtual ccGenericPrimitive* clone() const override;
//! Returns radius
inline PointCoordinateType getRadius() const { return m_radius; }
//! Sets radius
/** \warning changes primitive content (calls ccGenericPrimitive::updateRepresentation)
**/
void setRadius(PointCoordinateType radius);
protected:
//inherited from ccGenericPrimitive
bool toFile_MeOnly(QFile& out) const override;
bool fromFile_MeOnly(QFile& in, short dataVersion, int flags, LoadedIDMap& oldToNewIDMap) override;
bool buildUp() override;
//inherited from ccHObject
virtual void drawNameIn3D(CC_DRAW_CONTEXT& context) override;
//! Radius
PointCoordinateType m_radius;
};
#endif //CC_SPHERE_PRIMITIVE_HEADER
|