#pragma once #include "vde/core/point.h" #include "vde/core/line.h" #include "vde/core/plane.h" #include "vde/core/triangle.h" #include "vde/core/aabb.h" namespace vde::core { // ── Point distances ────────────────────────── double distance(const Point3D& a, const Point3D& b); double distance(const Point3D& p, const Line3D& line); double distance(const Point3D& p, const Segment3D& seg); double distance(const Point3D& p, const Plane& plane); double distance(const Point3D& p, const Triangle& tri); double distance(const Point3D& p, const AABB& box); // ── Feature-pair distances ─────────────────── double distance(const Segment3D& a, const Segment3D& b); double distance(const Line3D& a, const Line3D& b); double distance(const AABB& a, const AABB& b); double distance(const Triangle& a, const Triangle& b); // ── Closest-point queries ──────────────────── Point3D closest_point(const Point3D& p, const Triangle& tri); Point3D closest_point(const Point3D& p, const Segment3D& seg); Point3D closest_point(const Point3D& p, const AABB& box); Point3D closest_point(const Point3D& p, const Plane& plane); } // namespace vde::core