spheroid_closest — DRIVE diabolo op

• Data kinds: signal × table → table

• Call: import fullseye as fs; fs.ledger.spheroid_closest(x, sph: 'dict') -> 'dict' (to call the implementation directly, import diabolo; diabolo.spheroid_closest(x, sph: 'dict') -> 'dict'; from the registry, opsdrive.get("spheroid_closest"))

Usage

Point x → closest point on the spheroid surface point, signed distance s (> 0 inside, the paper's definition of s) and outward unit normal normal (direction of the gradient at the closest point).

The closest point uses Eberly's bisection on the ellipse in the meridian plane. ★The public implementation shrinks radially from the centre and returns that point (not the closest point; for a point 5 mm outside the ellipsoid it differs by up to 2.2 mm), and approximates the normal by (x/b, y/a, z/b) (the gradient would use squares; off the axes it deviates by up to 12.2°). Here it is written as in the paper's text, "move to the closest point", with the true normal. Raises ValueError: x is not a finite 3-vector, sph is not an ellipsoid dict.

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• poc_diabolo_model_and_vision — py -3.11 examples/poc_diabolo_model_and_vision.py

Ops the type connects to (they accept table as input)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

Same category (diabolo)

diabolo_params · diabolo_spheroid · diabolo_dynamics_step · diabolo_simulate · diabolo_state_sequence · diabolo_throw_catch_truth · string_tension_static · string_tension_from_sag


*Provenance: diabolo.py — DRIVE operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.