capsule_sdf — 3D sdf_csg op

• Data kinds: coordgrid → sdf

• Call: import fullseye as fs; fs.ledger.capsule_sdf(grid, a, b, radius) (implementation को सीधे call करना हो तो import sdf_ops; sdf_ops.capsule_sdf(grid, a, b, radius), registry से लेना हो तो ops3d.get("capsule_sdf"))

उपयोग

line segment a–b को radius radius से मोटा करके बने capsule का exact signed distance field।

sdf(p) = ‖p - (a + clamp(((p-a)·(b-a))/‖b-a‖², 0, 1)·(b-a))‖ - radius। यह segment तक की न्यूनतम दूरी ही है, इसलिए पूरे space में gradient norm 1 है (cylinder के विपरीत सिरे गोल होने से कोई कोना नहीं, इसलिए exact)। rib, piping, हड्डी, wire और tool के swept volume के approximation के लिए उपयुक्त।

Arguments और validation (ValueError):

• grid: अंतिम axis 3 वाला float array (..., 3)।

• a / b: core line के end points (3 elements)। a == b हो तो sphere (sphere_sdf से मेल खाता है)।

• radius: मोटाई (negative अस्वीकार)।

Return value: grid.shape[:-1] का float64।

कहाँ उपयोग करें: tool की पहुँच को "tool का swept volume part से नहीं टकराता?" के रूप में जाँचते समय, tool को capsule के रूप में रखकर देखें कि sdf_intersect का न्यूनतम मान positive है या नहीं। trabeculae, रक्त वाहिकाओं और fibres के synthesis में भी।

संदर्भ (sample data, साहित्य)

• 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 के स्रोत।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• procedural_hand — py -3.11 examples_3d/procedural_hand.py

• sdf_csg — py -3.11 examples_3d/sdf_csg.py

वे अगले ops जिनसे type जुड़ता है (sdf को input के रूप में लेते हैं)

sdf_to_occupancy · fuse_to_voxel · integrate · extract_surface_points · query_distance · sdf_union · sdf_intersect · sdf_subtract

इसी category के (sdf_csg)

grid_coords · sphere_sdf · box_sdf · plane_sdf · cylinder_sdf · torus_sdf · sdf_union · sdf_intersect


*Provenance: sdf_ops.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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