Class SphereGeometry

Inheritance Relationships

Base Type

Class Documentation

class SphereGeometry : public pfield::ObstacleGeometry

Geometry for a sphere obstacle.

Defined by a single radius. The sphere is centered at the obstacle origin.

SDF: d(p) = ||p|| - radius Normal: p / ||p|| (or UnitX when p ≈ 0)

Public Functions

explicit SphereGeometry(double radius)

Constructs a SphereGeometry.

Parameters:

radius – Radius of the sphere (must be > 0).

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.

Public Members

double radius

Sphere radius.