7 #include "imstkGeometry.h" 17 class AnalyticalGeometry;
28 void add(std::shared_ptr<AnalyticalGeometry> geometry);
38 size_t count()
const {
return m_geometries.size(); }
41 std::shared_ptr<Geometry>
get(
size_t index)
const;
44 void print()
const override;
50 void computeBoundingBox(Vec3d& lowerCorner, Vec3d& upperCorner,
const double paddingPercent = 0.0)
override;
56 bool isMesh()
const override;
65 Geometry* cloneImplementation()
const override;
69 std::shared_ptr<Geometry> geometry;
70 imstk::Mat4d localTransform = Mat4d::Identity();
73 std::vector<LocalGeometry> m_geometries;
void applyTransform(const Mat4d &) override
Directly apply transform to data.
void print() const override
Print.
double getVolume() override
Returns the volume of the geometry (if valid)
void transform(const Mat4d &T, TransformType type=TransformType::ConcatenateToTransform)
Applies a rigid transform to the geometry.
Base class for any geometrical representation.
void setLocalTransform(size_t index, const Mat4d &transform)
void updatePostTransformData() const override
void add(std::shared_ptr< AnalyticalGeometry > geometry)
Adds a geometry to the compound geometry.
void computeBoundingBox(Vec3d &lowerCorner, Vec3d &upperCorner, const double paddingPercent=0.0) override
Compute the bounding box for the geometry.
bool isMesh() const override
Returns true if the geometry is a mesh, else returns false.
Vec3d getCenter() override
Returns the bounding box center.