একটি সূচনা পয়েন্ট, একটি দূরত্ব এবং একটি কোণ ব্যবহার করে নতুন স্থানাঙ্কগুলি সন্ধান করুন


12

ঠিক আছে, বলুন আমার একটি পয়েন্ট সমন্বয় আছে।

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

এখন আমারও একটি দূরত্ব এবং একটি কোণ রয়েছে।

var distance = 20;
var angle = 72;

আমি যে সমস্যাটি সমাধান করার চেষ্টা করছি সেটি হ'ল, যদি আমি শুরু স্থানাঙ্ক থেকে কোণের দিক দিয়ে 20 পয়েন্ট ভ্রমণ করতে চাই তবে আমার নতুন স্থানাঙ্ক কী হবে তা আমি কীভাবে খুঁজে পাব?

আমি জানি উত্তরটিতে সাইন / কোসাইন জাতীয় জিনিস জড়িত, কারণ আমি কীভাবে এটি করতে হবে তা জানতাম তবে আমি সূত্রটি ভুলে গেছি। কেউ সাহায্য করতে পারেন?


1
72 ডিগ্রি কি থেকে? এক্স-অক্ষ, ওয়াই-অক্ষ? অন্যকিছু? ক্লকওয়াইজ, অ্যান্টলকওয়াইজ?
পিডিআর

@pdr 90 ডিগ্রী উত্তর একটি দিক হতে পারে, 45 ডিগ্রি উত্তর পূর্ব, ইত্যাদি একটি দিক হবে
dqhendricks

উত্তর:


5

SOHCAHTOA

সাইন = বিপরীতে / হাইপোটেনিউস কোসিন = সংলগ্ন / হাইপোটেনিউস ট্যানজেন্ট = বিপরীতে / সংলগ্ন

আপনার উদাহরণে:

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

সমস্যাটি হ'ল আপনি কোয়ারড্রেন্টে রয়েছেন সে সম্পর্কে আপনাকে সতর্কতা অবলম্বন করতে হবে This


1
এটি সমস্ত কোয়াড্রেন্টে কাজ করে। কোনও ভেক্টর (এক্স, ওয়াই) ঘোরানোর পুরো সূত্রটি হ'ল এক্স '= এক্স * পাপ (কোণ) + ওয়াই * কোস (কোণ) এবং ওয়াই' = এক্স * পাপ (কোণ) + ওয়াই * -কোস (কোণ)। এটি কেবলমাত্র এক্স অক্ষ (1,0) থেকে ঘোরার সময় আপনার উপরে যা আছে তা সরল করে।
চিউই গুম্বাল

হুমমম ... আমার কী রূপান্তর মনে পড়ছে যে চতুষ্কোণ সংক্রান্ত একটি গোছা আছে?
ডেভ

2
নোট করুন জাভাস্ক্রিপ্টে, Math.sinএবং এর মতো রেডিয়ানগুলিতে ইনপুট নেয়, তাই আপনাকে রূপান্তর করতে হবে:radians = (degrees * (Math.PI/180)
ব্রায়ান

1
@ ডেভনেকে আর্ক ফাংশনগুলি করার সময় আপনার সমস্যা আছে। পাপ (45 ডিগ্রি) = পাপ (135 ডিগ্রি) সুতরাং আরকসিন (পাপ (135 ডিগ্রি)) 45 ডিগ্রি ফিরিয়ে দেবে; 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; }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.