मैं वैश्विक समन्वय स्थान से स्थानीय स्थान में कैसे परिवर्तित करूं?


13

नामित इकाई को देखते हुए EntityA, मैं एक स्थानीय समन्वय स्थान को परिभाषित करना चाहता हूं, जहां स्थिति की EntityAउत्पत्ति है, इसका शीर्षक वेक्टर एक्स अक्ष है, और हेडिंग वेक्टर का सामान्य वाई अक्ष है:

उसी का सचित्र वर्णन

उनके वैश्विक निर्देशांक को देखते हुए, मैं EntityAस्थानीय अंतरिक्ष में किसी अन्य इकाई की स्थिति कैसे पता करूँ ?

एक उदाहरण: EntityAवैश्विक स्थिति (50,50) है, और EntityBयह (80,90) है। फिर स्थानीय स्थान EntityBमें क्या स्थिति EntityAहै?

संपादित करें: कृपया गणित पर आसान करें।

जवाबों:


21

ठीक है, इसलिए यह मानते हुए कि आपको पता है कि उस वस्तु A के लिए विश्व परिवर्तन मैट्रिक्स क्या है, आपको बस उस मैट्रिक्स का उलटा निर्माण करने की आवश्यकता है और आपके पास वह होगा जो आपको चाहिए।

मान लीजिए कि ऑब्जेक्ट A के रोटेशन, स्केलिंग और ट्रांसलेशन मैट्रिसेस का इस्तेमाल इसे ग्लोबल स्पेस में लाने के लिए किया जाता है , क्रमशः R , S और T हैं। आप इनको एक साथ गुणा करेंगे

एस * आर * टी = डब्ल्यू

अब, W को लें और इसके व्युत्क्रम W ^ -1 को किसी तरह खोजें। एक मैट्रिक्स का विलोम वह मैट्रिक्स होता है जो केवल विपरीत करता है। अपने व्युत्क्रम के साथ मैट्रिक्स का उत्पाद हमेशा पहचान मैट्रिक्स होता है।

डब्ल्यू * डब्ल्यू ^ -1 = आई

इस प्रकार डब्ल्यू ^ -1 = आई / डब्ल्यू ;

अब इस उलटा मैट्रिक्स को दृश्य में विश्व परिवर्तन के रूप में लागू करें और प्रत्येक ऑब्जेक्ट आपके द्वारा इच्छित निर्देशांक में होगा।

मैट्रिक्स गुणन के लिए, यह पृष्ठ देखें आइडेंटिटी मैट्रिक्स के लिए, इसे देखें

यहां एक और पेज दिया गया है जो आपको मैट्रिस देता है जिसे आपको डब्ल्यू बनाना होगा ।

उपरोक्त प्रश्न में, आपको x अक्ष में 50 के रूप में अनुवाद करना चाहिए, y अक्ष में 50 के रूप में अनुवाद करना चाहिए, या तो अक्ष में कोई स्केलिंग नहीं है, और एक रोटेशन जिसे आपने निर्दिष्ट नहीं किया है।


जवाब के लिए धन्यवाद, लेकिन मैं वास्तव में इस बारे में ज्यादा नहीं समझती। गणित के साथ बहुत अच्छा नहीं है। एक मैट्रिक्स के साथ है? 'रोटेशन, स्केलिंग और ट्रांसलेशन मैट्रिसेस' से आपका क्या तात्पर्य है?
अवीव कोहन

एक मैट्रिक्स परस्पर संबंधित संख्याओं या वस्तुओं के एक समूह का प्रतिनिधित्व करने का एक बहुत ही कॉम्पैक्ट तरीका है। कंप्यूटर ग्राफिक्स में, उनका उपयोग गणना करने के लिए बड़े पैमाने पर किया जाता है। रोटेशन ट्रांसलेशन और स्केलिंग मैट्रीस से मेरा क्या मतलब है, यह जानने के लिए उत्तर में अंतिम लिंक की जांच करें। आपको इसे पढ़ना होगा। अन्यथा आप अपनी समस्या को हल करने के लिए ashes999 की विधि का उपयोग कर सकते हैं, लेकिन जो जीता है, अगर वह है तो EntityA के रोटेशन और स्केलिंग के लिए खाता नहीं है।
द लाइट स्पार्क

9

मैंने अतीत में मैट्रिक्स के बजाय त्रिकोणमिति के साथ ऐसा किया है (मैं एक मैट्रिक्स नॉब हूं)। Ashes999 का उत्तर वहां आधा है, सापेक्ष वेक्टर प्राप्त करें, फिर उसे EntityA के कोण के व्युत्क्रम से घुमाएं।

   relativeX = B.x - A.x
   relativeY = B.y - A.y
   rotatedX = Cos(-Angle) * relativeX - Sin(-Angle) * relativeY
   rotatedY = Cos(-Angle) * relativeY + Sin(-Angle) * relativeX

2
+1 अधिक सहज और मैट्रिक्स की तुलना में त्रिकोणमिति का उपयोग करना आसान है।
रामचंद्र आपटे

पैमाने के बारे में क्या? आप इसे कब लागू करते हैं?
लेलमेड्डन

क्षमा करें, रोटेशन का मतलब है।
लेलमेड्डन

6

मुझे लाइट स्पार्क के उत्तर और इलियट के उत्तर के बीच कहीं न कहीं आपको कुछ देने की कोशिश करें, क्योंकि मैंने जो पढ़ा है, आप वास्तव में अनुसरण करने के लिए एक एल्गोरिथ्म की तलाश कर रहे हैं और न केवल गणित को आप पर फेंक दिया है।

समस्या कथन: यह देखते हुए कि आपके पास एक स्थान A (50, 50)और एक शीर्षक है (चूंकि आपने एक प्रदान नहीं किया था, मैं इसे इस रूप में बताऊंगा y = 2 * x + 25), यह पता लगाएं कि शीर्षक किसके B (80, 90)सापेक्ष है A

आप जो करना चाहते हैं वह वास्तव में काफी सीधा है। 1) Aअपने सिस्टम की उत्पत्ति के लिए स्थानांतरित करें। इसका सीधा सा मतलब यह है कि स्थानीय-से- Aवैश्विक मानों की स्थिति वैश्विक स्तर के मानों से कम है AAबन जाता है (0, 0)और Bबन जाता है (30, 40)

१.१) हेडिंग को भी स्थानांतरित करना होगा। यह वास्तव में करना बहुत आसान है, क्योंकि स्थानीय-से- Aशर्तों में y- अवरोधन हमेशा 0 होता है, और ढलान नहीं बदलेगा, इसलिए हमारे पास y = 2 * xशीर्षक के रूप में है।

2) अब हमें एक्स अक्ष पर पूर्व शीर्षक को संरेखित करने की आवश्यकता है। इसे कैसे किया जा सकता है? सबसे आसान तरीका, वैचारिक रूप से ऐसा करना x, y को-ऑर्डिनेट से ध्रुवीय को-ऑर्डिनेट सिस्टम में बदलना है। ध्रुवीय समन्वय प्रणाली में शामिल है R, एक स्थान की दूरी और phi, x- अक्ष से रोटेशन का कोण। Rके रूप में परिभाषित किया गया है sqrt(x^2 + y^2)और के रूप phiमें परिभाषित किया गया है atan(y / x)। इन दिनों अधिकांश कंप्यूटर भाषाएँ आगे बढ़ती हैं और एक ऐसे atan2(y, x)फंक्शन को परिभाषित करती हैं, जो ठीक वैसा ही काम करता है, atan(y/x)बल्कि इस तरह से करता है कि आउटपुट 080 से 180 डिग्री के बजाय -180 डिग्री से 360 डिग्री तक हो जाता है, लेकिन या तो काम करता है।

Bइस प्रकार बन जाता है R = sqrt(30^2 + 40^2) = sqrt(2500) = 50, और phi = atan2(40, 30) = 53.13डिग्री में।

इसी तरह, अब हेडिंग बदलती है। यह समझाने के लिए थोड़ा मुश्किल है, लेकिन यह इसलिए है कि शीर्षक, परिभाषा के अनुसार, हमेशा हमारे मूल से गुजरता है A, हमें Rघटक के बारे में चिंतित होने की आवश्यकता नहीं है । शीर्षक हमेशा के रूप में होने जा रहे हैं phi = C, जहां Cएक निरंतर है। इस मामले में, phi = atan(2 * x / x) = atan(2) = 63.435डिग्री।

अब, हम हेडिंग को लोकल-टू- Aसिस्टम के एक्स-एक्सिस पर ले जाने के लिए घुमा सकते हैं । बहुत कुछ ऐसा है जब हम Aसिस्टम के मूल में चले गए , हमें केवल इतना करना है कि सिस्टम के phiसभी phiमूल्यों से शीर्षक को घटाया जाए । तो phiकी Bहो जाता है 53.13 - 63.435 = -10.305डिग्री कम है।

अंत में, हमें ध्रुवीय को-ऑर्डिनेट में से x, y को-ऑर्डिनेट में परिवर्तित करना होगा। उस परिवर्तन को करने का सूत्र X = R * cos(phi)और है Y = R * sin(phi)। के लिए Bइसलिए, हम पाते हैं X = 50 * cos(-10.305) = 49.2और Y = 50 * sin(-10.305) = 8.9, इसलिए Bस्थानीय हैं- में Aसमन्वय के करीब है (49,9)

उम्मीद है कि मदद करता है, और आप का पालन करने के लिए गणित पर पर्याप्त प्रकाश है।


1

आपको वैश्विक अंतरिक्ष (1, y1, know) में एंटिटी ए की मुद्रा जानने की आवश्यकता है, जहां the एक्स अक्ष के सापेक्ष अभिविन्यास है।

EntityB स्थान को एक वैश्विक निर्देशांक (x2, y2) से स्थानीय समन्वय (x2 ', y2) में बदलने के लिए:)


  1. अभिव्यक्ति का उपयोग करना

ग्लोबल से लोकल

x2' = (x2-x1)cosθ + (y2-y1)sinθ

y2' = -(x2-x1)sinθ + (y2-y1)cosθ

लोकल से ग्लोबल

x2 = x2'cosθ - y2'sinθ + x1

y2 = x2'sinθ + y2'cosθ + y1

  1. मैट्रिसेस का उपयोग करना:

    R = [cosθ   -sinθ
    
         sinθ    cosθ]
    
    A = [x1
         y1]
    
    B_global = [x2
                y2]
    
    B_local = [x2' 
               y2']

ग्लोबल से लोकल

    B_local = inv(R) x (B_global - A)

लोकल से ग्लोबल

    B_global = R x B_local + A

-2

इसे लगाने के लिए बस B को इकाई A के संदर्भ की आवश्यकता होगी। आपको तब इकाई A की स्थिति और इकाई B की स्थिति के बीच अंतर प्राप्त करने की आवश्यकता होगी।


3
मुझे समझ नहीं आता कि यह सवाल का जवाब कैसे देता है।
एको
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.