एक प्रारंभिक बिंदु, एक दूरी और एक कोण का उपयोग करके नए निर्देशांक खोजें


12

ठीक है, कहते हैं कि मेरे पास एक बिंदु समन्वय है।

var coordinate = { x: 10, y: 20 };

अब मेरे पास एक दूरी और एक कोण भी है।

var distance = 20;
var angle = 72;

मैं जिस समस्या को हल करने की कोशिश कर रहा हूं, अगर मैं शुरुआती समन्वय से कोण की दिशा में 20 बिंदुओं की यात्रा करना चाहता हूं, तो मुझे कैसे पता चलेगा कि मेरे नए निर्देशांक क्या होंगे?

मुझे पता है कि उत्तर में साइन / कोसिन जैसी चीजें शामिल हैं, क्योंकि मैं जानता था कि यह कैसे करना है, लेकिन मैं तब से फार्मूला भूल गया हूं। क्या कोई मदद कर सकता है?


1
72 डिग्री से क्या? X- अक्ष, Y- अक्ष? कुछ और? दक्षिणावर्त, एंटीलॉकवाइज?
पीडीआर

@pdr 90 डिग्री उत्तर की दिशा होगी, 45 डिग्री उत्तर पूर्व की दिशा होगी, आदि
dqhendricks

जवाबों:


5

SOHCAHTOA

साइन = विपरीत / हाइपोटेन्यूज कोसाइन = आसन्न / हाइपोटेन्यूज स्पर्शरेखा = विपरीत / आसन्न

आपके उदाहरण में:

Sine(72) = Y/20 -> Y = Sine(72) * 20
Cosine(72) = X/20 -> X = Cosine(72) *20

समस्या यह है कि आपको इस बात से सावधान रहना होगा कि आप किस परिधि में हैं। यह ऊपरी दाएं चतुर्थांश में पूरी तरह से काम करता है, लेकिन अन्य तीन चतुर्थांशों में इतना अच्छा नहीं है।


1
यह सभी चतुष्कोणों में काम करता है। सदिश (X, Y) को घुमाने का पूर्ण सूत्र X '= X * sin (कोण) + Y * cos (कोण) और Y' = X * sin (कोण) + Y * -cos (कोण) है। जब आप एक्स अक्ष (1,0) से घूमते हैं तो यह आपके लिए सरल है।
Chewy Gumball

हम्मम ... क्या मुझे याद है कि मुझे याद है कि क्वाडंट्स के बारे में एक गोत्र है?
डेव नाय

2
ध्यान दें कि जावास्क्रिप्ट में, Math.sinऔर लाइक रेडियन में इनपुट लेता है, इसलिए आपको कन्वर्ट करने की आवश्यकता होगी:radians = (degrees * (Math.PI/180)
ब्रायन

1
@ जब आप कार्य करते हैं तो आपको समस्याएँ होती हैं। पाप (४५ डिग्री) = पाप (१३५ डिग्री) इसलिए आर्किंस (पाप (१३५ डिग्री)) ४५ डिग्री से कम होगा; Cos (45) = Cos (315) ...
mhoran_psprep

2

बस चल प्रकार लिपियों से एक जावास्क्रिप्ट अनुकूलन रिकॉर्ड करने के लिए

function createCoord(coord, bearing, distance){
    /** http://www.movable-type.co.uk/scripts/latlong.html
     φ is latitude, λ is longitude, 
     θ is the bearing (clockwise from north), 
     δ is the angular distance d/R; 
     d being the distance travelled, R the earth’s radius*
     **/

    var 
        radius = 6371e3, //meters
        δ = Number(distance) / radius, // angular distance in radians
        θ = Number(bearing).toRad();
        φ1 = coord[1].toRad(),
        λ1 = coord[0].toRad();

    var φ2 = Math.asin(Math.sin1)*Math.cos(δ) + Math.cos1)*Math.sin(δ)*Math.cos(θ));

    var λ2 = λ1 + Math.atan2(Math.sin(θ)*Math.sin(δ)*Math.cos1), Math.cos(δ)-Math.sin1)*Math.sin2));

    λ2 = 2+3*Math.PI) % (2*Math.PI) - Math.PI; // normalise to -180..+180°

    return 2.toDeg(), φ2.toDeg()]; //[lon, lat]
}

Number.prototype.toDeg = function() { return this * 180 / Math.PI; }
Number.prototype.toRad = function() { return this * Math.PI / 180; }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.