obb — 3D bounds op

• Data kinds: points → primitive

• Call: import fullseye as fs; fs.ledger.obb(points) -> 'dict' (implementation को सीधे call करना हो तो import pcseg; pcseg.obb(points) -> 'dict', registry से लेना हो तो ops3d.get("obb"))

उपयोग

PCA से oriented bounding box।

{center, axes (3,3 columns = box axes), extents (3, half-widths), corners (8,3)} लौटाता है। यह वह कसकर बैठने वाला box है जिससे manipulator, वस्तु के segment होकर अलग होने के बाद, उसके आकार और grasp width का अनुमान लगाता है।

प्रक्रिया: centroid c घटाए गए point cloud के SVD (full_matrices=False) से principal axes axes (columns = singular values का घटता क्रम, 1st column सबसे अधिक फैलाव की दिशा) लेकर, points को principal-axis coordinates में ले जाकर, हर axis के min/max से half-widths extents और box center center (सामान्यतः centroid से अलग) निकाले जाते हैं। corners center + (±extents) @ axes.T के 8 points हैं, और signs के संयोजन meshgrid([-1,1],[-1,1],[-1,1]) के क्रम में हैं।

• points: (N,3) के अलावा हो तो ValueError, 2 से कम points पर भी ValueError।

• PCA के principal axes "न्यूनतम volume वाले box" की गारंटी नहीं देते (वे केवल points के वितरण का अनुसरण करते हैं)। principal axes के sign SVD की मनमानी से तय होते हैं, और points का वितरण लगभग isotropic हो (singular values degenerate हों) तो axes की दिशा अस्थिर हो जाती है।

• extents half-widths हैं, इसलिए किनारों की लंबाई 2 * extents है। unit coordinates की unit है।

पृष्ठभूमि guides (इस op के पीछे की physics और conventions)

• blender_interop — Blender के साथ उपयोग — shape बनाएँ, fullseye से मापें (सावधानियाँ: axes, units, ground truth)

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

• hull_bounds — py -3.11 examples_3d/hull_bounds.py

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

fuse_to_voxel · angle_between_lines · angle_between_planes · angle_line_plane · distance_point_plane · distance_point_line · distance_line_line · distance_segment_segment

इसी category के (bounds)

convex_hull · aabb · min_enclosing_sphere


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

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