9 #include "imstkAnalyticalGeometry.h" 10 #include "imstkMacros.h" 22 Sphere(
const Vec3d& pos = Vec3d(0.0, 0.0, 0.0),
const double radius = 1.0) :
30 ~
Sphere()
override =
default;
35 void print()
const override;
48 void setRadius(
const double r);
54 void computeBoundingBox(Vec3d& lowerCorner, Vec3d& upperCorner,
const double paddingPercent = 0.0)
override;
72 return std::unique_ptr<Sphere>(cloneImplementation());
82 Sphere* cloneImplementation()
const std::unique_ptr< Sphere > clone()
Polymorphic clone, hides the declaration in superclass return own type.
Base class for any analytical geometrical representation.
void computeBoundingBox(Vec3d &lowerCorner, Vec3d &upperCorner, const double paddingPercent=0.0) override
Get the min, max of the AABB around the sphere.
void print() const override
Print the sphere info.
double getVolume() override
Returns the volume of the sphere.
void updatePostTransformData() const override
Update the Sphere parameters applying the latest transform.
void setPosition(const Vec3d p)
Set the local position.
double m_radius
Radius of the sphere.
double m_radiusPostTransform
Radius of the sphere once transform applied.
double getRadius(DataType type=DataType::PostTransform)
Get/Set the radius of the sphere.
Represents a sphere via its position & radius.
double getFunctionValue(const Vec3d &pos) const override
Returns signed distance to surface given position.
Vec3d m_positionPostTransform
position once transform applied
DataType
Enumeration for the data to retrieve PreTransform for data where transform matrix is not applied Po...
void applyTransform(const Mat4d &m) override
Apply a user transform directly to (pre-transformed) parameters producing new parameters.