ball op• Data kinds: none → table (an op determined by its arguments alone — it takes no image or data input)
• Call: import fullseye as fs; fs.ledger.tether_simulate(p0, v0, handle, L: 'float', t_end: 'float', dt: 'float' = 0.001, g: 'float' = 9.81, mass: 'float' = 0.01) -> 'dict' (to call the implementation directly, import ballistics; ballistics.tether_simulate(p0, v0, handle, L: 'float', t_end: 'float', dt: 'float' = 0.001, g: 'float' = 9.81, mass: 'float' = 0.01) -> 'dict'; from the registry, opsdrive.get("tether_simulate"))
Motion of a point mass tied to the hand handle by an inextensible string (length L) (the kendama ball).
handle is either a fixed point (3,) or a function time → (3,). Each step advances free fall; when |p − h| > L the point is projected onto the sphere and the outward relative radial velocity is removed (one-sided constraint: the string only pulls, never pushes). The kinetic energy ½ m v_r² lost at that instant is accumulated into "snap_loss". Tension estimate = radial velocity change removed by the projection × m / dt (≥ 0). Return value {"t", "p", "v", "tension", "taut" (bool), "snap_times", "snap_loss", "energy"}. Theorem gates: |p − h| ≤ L + 1e-9, tension ≥ 0, if the hand is fixed the mechanical energy is invariant except at snap instants (within RK error), and the small-amplitude period is 2π√(L/g).
• 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.
• poc_kendama — py -3.11 examples/poc_kendama.py
table as input)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
ball)ball_params · impact_params · flight_vacuum · flight_ode · flight_simulate · flight_state_at · magnus_lift_coefficient · drag_coefficient_sphere
*Provenance: ballistics.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.