2011-06-07 3 views
6

पर 3 डी पॉइंट्स को ट्रांसफॉर्म करें मेरे पास अंक (x1, x2, .. xn) का एक सेट है जो एक्स + द्वारा + Cz + d = 0 द्वारा परिभाषित विमान पर स्थित है। मैं XY विमान में अनुवाद और घुमाने के लिए रूपांतरण मैट्रिक्स को ढूंढना चाहता हूं। तो, नया बिंदु समन्वय x1 '= (xnew, ynew, 0) होगा।2 डी

बहुत सारे उत्तर quaternion, dot या cross product matrix देते हैं। मुझे यकीन नहीं है कि कौन सा सही तरीका है।

अपने विमान समीकरण में आप

+1

ऐसा लगता है कि कोई एकल रूपांतरण मैट्रिक्स नहीं है - आपको सतह सामान्य (ए, बी, सी) के चारों ओर घूर्णन के बारे में कोई जानकारी नहीं है। यदि आपकी सतह एक पिन पर एक पोस्ट थी (पिन सामान्य सतह के साथ) और मैंने पिन को घुमाने के बिना पोस्ट को घुमाया, जो रिकॉर्ड नहीं किया जाएगा। तो क्या आप बस किसी भी ट्रांसफॉर्म की तलाश कर रहे हैं जो दूरी और कोणों को सुरक्षित रखता है? या उदा। क्या आपके पास एक्स अक्ष की एक विशिष्ट जोड़ी है जिसे आप एक्स अक्ष पर दोनों जानते हैं? – Tommy

उत्तर

7

सबसे पहले, जब तक धन्यवाद, घ = 0, कोई linear transformation आप आवेदन कर सकते हैं। आपको इसके बजाय affine transformation निष्पादित करने की आवश्यकता है।

ऐसा करने का एक तरीका यह है कि एक कोण और वेक्टर निर्धारित करने के लिए जो आपके पॉइंटेट को XY विमान के समानांतर विमान में झूठ बोलने के लिए घूमना है (यानी आपके रूपांतरित पॉइंट के जेड घटक में सभी के समान मूल्य हैं) । फिर आप बस जेड घटक ड्रॉप करते हैं।

इसके लिए, वी अपने बिंदु वाले विमान के लिए सामान्यीकृत सामान्य विमान बनें। सुविधा के लिए ऊपर कुल्हाड़ी + द्वारा + CZ + डी अपने विमान समीकरण से परिभाषित = 0:

V = (A, B, C) 
V' = V/||V|| = (A', B', C') 
Z = (0, 0, 1)

जहां

A' = A/||V|| 
B' = B/||V|| 
C' = C/||V|| 
||V|| = (A2+B2+C2)1/2

कोण बस हो जाएगा:

θ = cos-1(ZV/||V||) 
    = cos-1(ZV') 
    = cos-1(C')

अक्ष आर जिसके बारे में घूमना सामान्य है सामान्य सामान्य विमान का क्रॉस उत्पाद सामान्य वी ' और जेड। यही कारण है कि

R = V'×Z 
    = (B', -A', 0)

अब आप का निर्माण करने के लिए इस कोण/अक्ष जोड़ी का उपयोग कर सकते है quaternion rotation XY विमान के लिए एक हवाई जहाज़ समानांतर करने के लिए अपने डेटासेट में अंक के सभी बारी बारी से करने की जरूरत है। फिर, मैंने पहले कहा था, एक्सवाई विमान पर ऑर्थोगोनल प्रक्षेपण करने के लिए बस जेड घटक छोड़ दें।

अद्यतन: antonakos एक API अक्ष/कोण जोड़े लेने उपयोग करने से पहले आर सामान्य के बारे में एक अच्छा बिंदु बनाता है।

+1

एक संकेत मुद्दा: 'आर = वी '× जेड', 'आर = जेड × वी' नहीं। यह भी ध्यान देने योग्य हो सकता है कि कई धुरी/कोण एपीआई को सामान्यीकृत होने के लिए 'आर' की आवश्यकता होती है (जो अभी तक नहीं है)। – antonakos

+0

@antonakos: अपडेट किया गया। धन्यवाद। – andand