Class BoxGeometry
Defined in File pf_obstacle_geometry.hpp
Inheritance Relationships
Base Type
public pfield::ObstacleGeometry(Class ObstacleGeometry)
Class Documentation
-
class BoxGeometry : public pfield::ObstacleGeometry
Geometry for a box (axis-aligned or oriented bounding box) obstacle.
Defined by full extents (length × width × height) along the local X, Y, Z axes respectively. Supports OBB-fitted boxes (e.g. fitted to a mesh via PCA): in that case
axesholds the PCA rotation andcentroidOffsetholds the displacement from the collision-origin frame to the OBB center.SDF: closest-point distance to the box surface (negative inside).
Public Functions
-
BoxGeometry(double length, double width, double height)
Constructs an axis-aligned BoxGeometry.
- Parameters:
length – Full extent along local X.
width – Full extent along local Y.
height – Full extent along local Z.
-
BoxGeometry(double length, double width, double height, const Eigen::Matrix3d &axes, const Eigen::Vector3d ¢roidOffset)
Constructs an OBB-fitted BoxGeometry.
- Parameters:
length – Full extent along the OBB X axis.
width – Full extent along the OBB Y axis.
height – Full extent along the OBB Z axis.
axes – Rotation from the obstacle frame to the OBB principal-axis frame (columns are OBB axes).
centroidOffset – Offset from the collision-origin to the OBB center, expressed in the obstacle’s local frame.
-
virtual ObstacleType getType() const override
Returns the ObstacleType discriminator for this geometry.
-
virtual std::vector<double> asVector() const override
Returns a vector of the geometry’s defining parameters.
The vector layout is type-specific: Sphere → {radius} Box → {length, width, height} Cylinder → {radius, height} Ellipsoid → {semi_x, semi_y, semi_z} Capsule → {radius, height} Mesh → {length, width, height} (bounding-box dims or zeros)
-
virtual Eigen::Vector3d halfDimensions(const Eigen::Vector3d &meshScale) const override
Returns the half-dimensions of the obstacle’s axis-aligned bounding box.
Used for broad-phase influence-zone checks.
- Parameters:
meshScale – Scale of the mesh resource (used only by MeshGeometry; ignored by all other types).
-
virtual void computeSignedDistanceAndNormal(const Eigen::Vector3d &localPoint, const Eigen::Quaterniond &obstacleOrientation, double &signedDistance, Eigen::Vector3d &normal) const override
Computes the signed distance and outward surface normal from a point expressed in the obstacle’s local frame.
The caller is responsible for transforming the world-frame query point into the obstacle’s local frame before calling this method.
- Parameters:
localPoint – [in] Query point in the obstacle’s local frame.
obstacleOrientation – [in] World-frame orientation of the obstacle (quaternion), used to rotate the computed normal back to world coordinates.
signedDistance – [out] Signed distance to the obstacle surface (negative if inside, positive if outside).
normal – [out] Outward unit normal in world coordinates at the closest surface point.
-
virtual std::shared_ptr<coal::CollisionGeometry> buildCoalGeometry(const Eigen::Vector3d &obstaclePosition, const Eigen::Quaterniond &obstacleOrientation, coal::Transform3s &coalTransform) const override
Builds the Coal collision geometry for this obstacle.
The returned shared_ptr is used to construct a coal::CollisionObject. The caller is responsible for supplying the correct world-frame transform.
- Parameters:
obstaclePosition – World-frame position of the obstacle origin.
obstacleOrientation – World-frame orientation of the obstacle.
coalTransform – [out] The Coal transform that should be passed to coal::CollisionObject together with the returned geometry. For most types this equals the obstacle pose, but OBB-fitted shapes (Box, Capsule) may shift and rotate it to the OBB center.
- Returns:
Shared pointer to the Coal collision geometry.
-
virtual coal::Transform3s computeUpdatedCoalTransform(const Eigen::Vector3d &obstaclePosition, const Eigen::Quaterniond &obstacleOrientation) const override
Computes the world-frame Coal transform to use when updating a cached collision object’s pose.
For most types this simply encodes (obstaclePosition, obstacleOrientation). OBB-fitted types (Box, Capsule) adjust for the centroid offset and PCA rotation baked into the Coal object at construction time.
- Parameters:
obstaclePosition – New world-frame position of the obstacle.
obstacleOrientation – New world-frame orientation of the obstacle.
- Returns:
The Coal transform to apply to the cached collision object.
-
virtual bool operator==(const ObstacleGeometry &other) const override
Equality comparison — only types with the same concrete class and parameters are equal.
-
virtual std::unique_ptr<ObstacleGeometry> clone() const override
Deep-copy factory, so PotentialFieldObstacle can clone its geometry.
-
BoxGeometry(double length, double width, double height)