plane_sdf — 3D sdf_csg op

• Data kinds: coordgrid → sdf

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

उपयोग

half-space (plane से कटा हुआ हिस्सा) का exact signed distance field (अंदर ऋणात्मक, बाहर धनात्मक)।

sdf(p) = (p - point) · n̂। normal n̂ जिस ओर इशारा करता है वह बाहर (positive) है, और उलटी ओर अंदर है। chamfer, cutting, या "board से केवल ऊपर का हिस्सा" जैसे केवल एक ओर को रखने वाले operations के लिए उपयोग होता है। sdf_intersect को परतों में लगाने से कोई भी convex polyhedron बन सकता है। लेकिन max से intersection कोनों के बाहर exact नहीं है: 6 planes से cuboid बनाने पर occupancy (<= 0) और अंदर के मान box_sdf से पूरी तरह मेल खाते हैं, पर बाहर कोनों के पास अधिकतम 2.1 तक कम आँकलन होता है (half-side 2 के box और grid 0.25 पर मापा गया) -- यह CSG का मानक गुण है; यदि दूरी स्वयं चाहिए तो box_sdf का उपयोग करें।

Exactness: plane का gradient norm पूरे space में 1 है, इसलिए यह मान हर जगह सच्ची signed distance है (box_sdf की तरह कोनों पर बदलने वाले case split की ज़रूरत नहीं)।

Arguments और validation (ValueError):

• grid: अंतिम axis 3 वाला float array (..., 3) (grid_coords का output या points की सूची)।

• point: plane पर 1 point (3 elements)।

• normal: plane का normal (3 elements, zero vector और NaN अस्वीकार)। लंबाई अपने-आप 1 पर normalise होती है, इसलिए परिमाण से परिणाम पर असर नहीं पड़ता (केवल दिशा मायने रखती है)।

Return value: grid.shape[:-1] का float64। normal की ओर positive, उलटी ओर negative, plane पर 0।

कहाँ उपयोग करें: sdf_subtract(part, plane_sdf(g, p, n)) से "उस plane के normal वाली ओर का हिस्सा काट दें"। दिशा उलटनी हो तो normal का sign उलट दें (-sdf से भी वही होता है)।

संदर्भ (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_subtract

इसी category के (sdf_csg)

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