rotation_window — DRIVE pegsym op

• Data kinds: scalar × scalar × scalar → table

• Call: import fullseye as fs; fs.ledger.rotation_window(n: 'int', apothem: 'float', clearance: 'float', chamfer: 'float' = 0.0, peg_vertices=None, hole_vertices=None, tol: 'float' = 1e-10, mu: 'float | None' = None) -> 'dict' (implementation को सीधे call करना हो तो import pegsym; pegsym.rotation_window(n: 'int', apothem: 'float', clearance: 'float', chamfer: 'float' = 0.0, peg_vertices=None, hole_vertices=None, tol: 'float' = 1e-10, mu: 'float | None' = None) -> 'dict', registry से लेना हो तो opsdrive.get("rotation_window"))

उपयोग

rotation window जिसमें peg छेद में (chamfer हो तो उसके मुँह में) प्रवेश करता है। नियमित n-gon का closed form (व्युत्पन्न): केंद्र मिलाने पर vertex face normal से π/n ∓ φ की दिशा में होते हैं, और सबसे बाहर निकले vertex की normal दिशा में लंबाई a cos(π/n − |φ|) अगर A + δ (+ W) से अधिक न हो तो peg प्रवेश करता है: φ = π/n − arccos(x), x = (A + δ + W) cos(π/n)/A (x ≥ 1 हो तो window पूरी half period π/n भर देती है)। arccos में 1 के पास rounding floor होता है, इसलिए इसे atan2(√(1 − x²), x) के रूप में लिखा जाता है। peg_vertices और hole_vertices देने पर linear program (polygon_fit_check, translation भी मुक्त) पर bisection से धनात्मक और ऋणात्मक दिशा की window भी मापी जाती है (2nd (स्वतंत्र) implementation; keyed shape के लिए केवल यही)। phi_fit (मुँह नहीं, सबसे संकरा भाग), phi_cap (chamfer का मुँह), period = 2π/n, M = ⌈period/(2 phi_cap)⌉ और lp (plus/minus: vertex देने पर, मुँह में प्रवेश वाली window के दोनों छोर = 0 को समाहित करने वाला connected अंतराल; scan half period को 360 step में बाँटता है, छोर bisection से) लौटाता है।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

mu を渡すと摩擦で止まる限界も返す(導出、45° の面取り): 口に載った頂点(面の法線から β = π/n − φ の向き)が面取りを滑り下りるには、ペグが回らなければならない(偶数の n では向かい合う頂点の横向きの力が打ち消し合い、並進しない)。軸まわりのばねが弱いと接触力の軸まわりのモーメントが 0 で釣り合う: 面取りの法線の接線成分 sin β/√2 と、滑りの向き(面の上で下り + 回転)に逆らう摩擦 μ/√(1 + sin²β) が等しい所が境で、回るのは s√(1 + s²) > √2 μ(s = sin β)、すなわち s² > (√(1 + 8μ²) − 1)/2 の時。phi_friction = π/n − β*、phi_eff = max(phi_fit, min(phi_cap, phi_friction))(面取りに頼らず入る分は摩擦に依らない)。六角形(頂点が面の法線に近い)は摩擦で窓が狭まり、三角形・四角形は幾何で決まる —— MuJoCo の試作で確かめた(PoC の --full)。Raises ValueError: n < 1、apothem ≤ 0、clearance < 0、chamfer < 0、mu < 0、頂点を片方だけ渡した。

संदर्भ (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 के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

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

• poc_peg_symmetry_search — py -3.11 examples/poc_peg_symmetry_search.py

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

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

इसी category के (pegsym)

polygon_peg · polygon_offset · polygon_fit_check · polygon_two_point_depth · polygon_coverage_image · plane_topview · polygon_yaw_read · relative_yaw_from_images


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

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