geometry op• Data kinds: primitive → measurement
• Call: import fullseye as fs; fs.ledger.distance_segment_segment(p0, p1, q0, q1) (implementation को सीधे call करना हो तो import match3d; match3d.distance_segment_segment(p0, p1, q0, q1), registry से लेना हो तो ops3d.get("distance_segment_segment"))
• Ledger के ज़रिए return value: fullseye.ledger.distance_segment_segment(...) केवल घोषित out type measurement का value लौटाता है (मूल function सहायक जानकारी भी लौटाता है)। जो हिस्सा छोड़ दिया गया है उसकी ज़रूरत हो तो fullseye.ledger.distance_segment_segment.raw(...) का उपयोग करें, या match3d.distance_segment_segment को सीधे call करें।
finite line segments के बीच न्यूनतम दूरी, और उनके निकटतम points का जोड़ा। → (distance, cp, cq)।
distance_line_line अनंत रेखाओं की दूरी है, इसलिए अलग-अलग 2 segment के लिए भी यह 0 लौटा सकता है (मापा गया: (0,0,0)-(1,0,0) और (5,0,0)-(6,0,0) के लिए 0.0, ground truth 4.0)। हाथ-पैर, robot के link, पाइप और tool सभी सीमित होते हैं, इसलिए safety distance या interference की जाँच में अनंत-रेखा वाला संस्करण उपयोग करने पर खतरे को कम आँका जाता है (poc_safety_clearance के माप में उन्हीं 2 के लिए 87.6 % कम आँकलन)।
Args:
p0, p1: segment 1 के अंत-बिंदु (3,)। p0 == p1 हो तो इसे बिंदु माना जाता है।
q0, q1: segment 2 के अंत-बिंदु (3,)।
Returns:
(distance, cp, cq): न्यूनतम दूरी float, और segment 1 तथा segment 2 की ओर के निकटतम बिंदु
(3,)। distance == 0 तब होता है जब 2 segment प्रतिच्छेद करते हैं (या छूते हैं)।
★ledger के माध्यम से (fullseye.ledger.distance_segment_segment) घोषित out type का
केवल distance लौटता है। निकटतम बिंदु भी चाहिए हों तो
fullseye.ledger.distance_segment_segment.raw(...)।
Raises:
ValueError: जब अंत-बिंदु को (3,) में नहीं बदला जा सके, या वह परिमित न हो।
समानांतर और degenerate (बिंदु में सिमटा segment) स्थितियाँ भी branching से सही ढंग से संभाली जाती हैं (Ericson, *Real-Time Collision Detection*, §5.1.9 की clamped closest-point विधि)। capsule (core line + त्रिज्या) के बीच की दूरी distance - r1 - r2 है; interference का अर्थ है कि यह ऋणात्मक हो जाए।
Reference (public): C. Ericson, *Real-Time Collision Detection*, Morgan Kaufmann 2005, §5.1.9 "Closest Points of Two Line Segments".
• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।
• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।
• geometry_metrology — py -3.11 examples_3d/geometry_metrology.py
measurement को input के रूप में लेते हैं)vol_gaussian_psf · fuse_to_voxel · fresnel_reflectance · snell_angle
geometry)line_from_2points · plane_from_3points · angle_3points · angle_between_lines · angle_between_planes · angle_line_plane · distance_point_plane · distance_point_line
*Provenance: match3d.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.