Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Testing-Dataset

This repository contains two complementary datasets used to evaluate the NON-GON collision-detection algorithms.

Random dataset — geometric parameters (position, size, rotation) are sampled randomly for each contact pair. The Gilbert–Johnson–Keerthi (GJK) algorithm and Expanding Polytope Algorithm (EPA) provide ground-truth collision status and signed distance. For full generation details see:

Edge-case dataset — hand-crafted cases designed to stress-test the algorithms against specific geometric configurations known to be difficult: near-boundary contacts, degenerate shapes, rotation extremes, and scale mismatches. See edge/EDGE_DATASET.md for full details.

Both datasets use GJK/EPA (via coal) as ground truth and serve as a high-fidelity reference benchmark within the project.

Dataset Summary

Dataset Pair Samples Colliding Non-colliding Labels
PQ Ellipse–Ellipse 2000 1000 1000 collision
PQ Cylinder–Cylinder 2000 1000 1000 collision
PQ Ellipsoid–Ellipsoid 2000 1000 1000 collision
PQ Ellipsoid–Elliptic Paraboloid 2000 1000 1000 collision
PQ Hyperboloid–Plane 2000 1000 1000 collision
SD ConvexCircle–ConvexCircle 2000 1000 1000 collision, signed distance
SD ConvexLine–Line 2000 1000 1000 collision, signed distance
SD Ellipse–Ellipse 2000 1000 1000 collision, signed distance
SD Ellipsoid–Ellipsoid 2000 1000 1000 collision, signed distance
SD HemiEllipsoid–Plane 2000 1000 1000 collision, signed distance
SD Point–Ellipse 2000 1000 1000 collision, signed distance
SD Point–Ellipsoid 2000 1000 1000 collision, signed distance
SD Superellipse–Line Segment 2000 1000 1000 collision, signed distance
SD SuperEllipsoid–Plane 2000 1000 1000 collision, signed distance
Total 14 pairs 28000 14000 14000

Results

PQ Dataset — Collision Classification Accuracy

Pair Correct Total Accuracy
Ellipse–Ellipse 1993 2000 99.65%
Cylinder–Cylinder 1937 2000 96.85%
Ellipsoid–Ellipsoid 1995 2000 99.75%
Ellipsoid–Elliptic Paraboloid 1754 2000 87.70%
Hyperboloid–Plane 1111 2000 55.55%

SD Dataset — Signed Distance RMSE

Pair Samples RMSE
ConvexCircle–ConvexCircle 2000 0.342734
ConvexLine–Line 2000 0.700965
Ellipse–Ellipse 2000 0.139106
Ellipsoid–Ellipsoid 2000 0.966192
HemiEllipsoid–Plane 2000 4.887331
Point–Ellipse 2000 0.007352
Point–Ellipsoid 2000 0.723910
Superellipse–Line Segment 2000 0.010067
SuperEllipsoid–Plane 2000 2.281848

Edge-Case Dataset

Hand-crafted cases that target specific geometric configurations known to be difficult. Every case has a GJK/coal ground truth. See edge/EDGE_DATASET.md for full row-by-row breakdowns and failure analysis.

Structure

edge/
├── PQ/   — Proximity Query (binary collision label)
│   ├── EllipseEllipse.csv                (30 rows)
│   ├── EllipsoidEllipsoid.csv            (30 rows)
│   ├── CylinderCylinder.csv              (30 rows)
│   ├── EllipsoidEllipticParaboloid.csv   (30 rows)
│   └── HyperboloidPlane.csv              (36 rows)
└── SD/   — Shortest Distance (signed distance value)
    ├── EllipseEllipse.csv                (30 rows)
    ├── EllipsoidEllipsoid.csv            (30 rows)
    ├── ConvexCircleCircle.csv            (30 rows)
    ├── ConvexLineLine.csv                (30 rows)
    ├── PointEllipse.csv                  (30 rows)
    ├── PointEllipsoid.csv                (30 rows)
    ├── SuperellipseLineSegment.csv       (31 rows)
    ├── SuperEllipsoidPlane.csv           (30 rows)
    └── HemiEllipsoidPlane.csv            (30 rows)

PQ Edge Results

Pair Pass Total Notes
EllipseEllipse 30 30 All categories pass
EllipsoidEllipsoid 30 30 All categories pass
CylinderCylinder 30 30 All categories pass
EllipsoidEllipticParaboloid 29 30 False positive at gap=0.001 from apex (row 15)
HyperboloidPlane 23 36 Fails for plane in upper half of height range, small rotations (10°–30°), and near-degenerate shapes

SD Edge Results

Failures on overlapping cases (collision=1, GT < 0) are expected: the alternating-projection algorithm returns surface-to-surface distance, not penetration depth. Only failures on separated cases (GT > 0) represent genuine bugs.

Pair Pass Total Genuine bugs (separated cases)
EllipseEllipse 18 30 None — all failures are overlap cases
EllipsoidEllipsoid 17 30 None — all failures are overlap cases
ConvexCircleCircle 20 30 Rows 26–27: direction-dependent error (y-axis and 45° separations wrong)
ConvexLineLine 16 30 Multiple rows: y-axis projection only — ignores x-offset, returns 0 for horizontal exterior
PointEllipse 24 30 Rows 26, 29: 89° rotation and near-circle
PointEllipsoid 28 30 Row 28: diagonal approach, error exactly +2.0
SuperellipseLineSegment 25 31 None — all failures are overlap cases
SuperEllipsoidPlane 24 30 Rows 11, 18–22: error grows with rotation 30°→75°, vanishes at 90°
HemiEllipsoidPlane 29 30 None — single failure is overlap case

Genuine Algorithm Bugs

Pair Trigger
HyperboloidPlane PQ Plane in upper half of height range; small rotations (10°–30°); near-degenerate shapes (c→0, c→∞, asymmetric axes)
EllipsoidEllipticParaboloid PQ False positive at gap=0.001 from apex
SuperEllipsoidPlane SD Error grows with rotation 30°→75°, drops to ~0 at 90° (principal-axis projection)
PointEllipsoid SD Diagonal approach — error exactly +2.0 (axis-projection bug)
PointEllipse SD 89° rotation and near-circle
ConvexLineLine SD y-axis projection only — returns 0 for horizontal exterior; ignores x-offset
ConvexCircleCircle SD Direction-dependent: correct on x-axis, wrong on y-axis and 45°

About

Ground-truth dataset generated using the Gilbert–Johnson–Keerthi (GJK) algorithm with the Expanding Polytope Algorithm (EPA) for collision detection and penetration depth computation. This dataset was produced to serve as a high-fidelity reference benchmark within the project.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors