sdf_subtract — 3D sdf_csg op

• Data kinds: sdf × sdf → sdf

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

उपयोग

difference A\B = max(a, -b) (A के अंदर और B के बाहर = -b के अंदर)।

b का sign उलटने से "B का बाहर अंदर और B का अंदर बाहर" हो जाता है (complement), इसलिए A के साथ इसका गुणनफल A में से B को खोखला करके निकाला गया आकार बनता है। non-commutative: sdf_subtract(a,b) != sdf_subtract(b,a)।

गणना: np.maximum(np.asarray(a, float64), -np.asarray(b, float64))। sdf_intersect(a, -b) के समान। shape का broadcast-संगत होना ज़रूरी है (असंगत हो तो numpy का ValueError), इसके अलावा कोई जाँच नहीं। NaN propagate होता है, ±inf भी exact रूप से propagate होता है (b = +inf वाले point पर -b = -inf है, इसलिए a जैसा है वैसा रहता है = "B अनंत दूर है" वाला point A ही रहता है)।

Input: एक ही grid पर 2 SDF (अंदर negative, बाहर positive)। a रखा जाने वाला आकार, b खोखला करके निकाला जाने वाला आकार। दूरी की unit input जैसी ही।

Return value: broadcast के बाद के shape का float64। <= 0 A\B की occupancy है।

ध्यान दें:

• B के अंदर मान -b > 0 (B की surface तक की दूरी) होता है, इसलिए खोखले किए गए छेद की अंदरूनी दीवार तक की दूरी बाहर exact है और A के अंदर lower bound (CSG का मानक गुण)।

• B यदि A को पूरी तरह घेर ले तो सभी elements positive (खाली set)। यह error नहीं है।

• drilling, pocket machining और shell (a और sdf_offset(a, -t) के अंतर से मोटाई t का shell) के लिए उपयोग होता है।

संदर्भ (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 करते हैं)

• 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_smooth_union

इसी category के (sdf_csg)

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


*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.