frame op• Data kinds: pairs → pairs
• Call: import fullseye as fs; fs.ledger.profile_normalise(contour) (implementation को सीधे call करना हो तो import profileops; profileops.profile_normalise(contour), registry से लेना हो तो opsprofile.get("profile_normalise"))
rotation और translation से normalise करता है ताकि chord की लंबाई 1 हो, leading edge origin पर हो और chord +x की ओर हो।
scale केवल chord length से बदला जाता है (shape विकृत नहीं होता)। normalise किया हुआ contour लौटाता है।
प्रक्रिया: profile_chord_frame से leading edge le, trailing edge te (खुले trailing edge में gap का मध्यबिंदु), chord length chord और chord की दिशा angle_deg निकालकर ((contour - le) @ R(-angle).T) / chord लौटाया जाता है। यह केवल rotation, translation और uniform scale का similarity transform है, points की संख्या और क्रम बना रहता है (resampling नहीं)।
• contour: (N, 2) के (x, y), 8 या अधिक points, finite। (row, col) देने पर chord तो मिल जाता है पर ऊपर-नीचे उलट जाते हैं (कोई exception नहीं उठता)। बंद है या नहीं, यह यहाँ नहीं जाँचा जाता (profile_sides और उसके बाद वाले जाँचते हैं)।
• return value: (N, 2) float64। leading edge (0, 0) पर, trailing edge (1, 0) के पास, x [0, 1] का chord अनुपात है। y का चिह्न (upper surface धनात्मक है या ऋणात्मक) input की घूमने की दिशा से तय होता है, और उलटा नहीं किया जाता।
• विफलता: ValueError (shape, points की कमी, non-finite, chord length 0 = सभी points एक ही जगह)।
leading/trailing edge का निर्णय "सबसे दूर के point-pair में से, थोड़ा अंदर जिसका section मोटा हो = leading edge" है, इसलिए आगे-पीछे समान मोटाई वाले symmetric section (ellipse आदि) में आगे-पीछे उलट सकते हैं। profile_sides / profile_thickness / profile_camber इसे अंदर से call करते हैं।
• profile_metrology family guide
• 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 में दिए गए हैं।
• profile_frame_tour — py -3.11 examples/profile_frame_tour.py
pairs को input के रूप में लेते हैं)profile_perturb · profile_chord_frame · profile_resample · profile_sides · profile_thickness · profile_camber · profile_leading_edge_radius · profile_trailing_edge_gap
frame)profile_chord_frame · profile_resample
*Provenance: profileops.py — PROFILE operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.