sdf_union — 3D sdf_csg op

• Data kinds: sdf × sdf → sdf

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

उपयोग

2 SDFs का union A∪B = element-wise min(a, b) (किसी एक में भी अंदर=ऋणात्मक हो तो अंदर)।

zero isosurface दोनों आकारों की boundaries के union से exact मेल खाती है। बाहर यह exact SDF (निकटतम surface तक की दूरी) है, अंदर conservative lower bound। a/b का केवल broadcast-संगत होना काफ़ी है।

गणना: np.minimum(np.asarray(a, float64), np.asarray(b, float64))। इसके अलावा कोई जाँच नहीं -- shape broadcast न हो सके तो numpy का ValueError, NaN हर element पर propagate होता है (np.minimum NaN लौटाता है)। ±inf exact रूप से propagate होता है (min(a, +inf) = a: esdf के "सब free हो तो +inf" contract के साथ interoperate कर सकता है)।

Input: एक ही grid पर evaluate किए गए 2 SDF (sphere_sdf / box_sdf / esdf के output आदि, अंदर negative, बाहर positive)। shape grid_coords का (nx, ny, nz) भी हो सकता है और (N,) की points सूची भी। दूरी की unit input जैसी ही।

Return value: broadcast के बाद के shape का float64। zero crossing (<= 0) A∪B की occupancy है।

ध्यान दें: अंदर का मान "दोनों में से निकट वाली surface तक की दूरी" की lower bound है, और overlap क्षेत्र में सच्ची दूरी से छोटा (absolute value में बड़ा) आता है। यह CSG का मानक गुण है, और isosurface extraction (marching cubes) या sdf_offset के dilation पर असर नहीं डालता। जोड़ को गोल करना हो तो sdf_smooth_union।

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

• gear_metrology — py -3.11 examples_3d/gear_metrology.py

• render_beauty — py -3.11 examples_3d/render_beauty.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_intersect · sdf_subtract · sdf_smooth_union

इसी category के (sdf_csg)

grid_coords · sphere_sdf · box_sdf · plane_sdf · cylinder_sdf · torus_sdf · capsule_sdf · 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.