transform x,y coordinate to angle

34 ビュー (過去 30 日間)
Rose
Rose 2020 年 3 月 12 日
編集済み: Jon 2020 年 3 月 12 日
Hi Guys,
I'm struggeling with this problem in which I have two points (x and y coordinates known) that move independent of eachother. I need to find the angle between these two points wrt North. The angle can be between -180:180. As indicated in the Figure I added, I would like to find the "red angle", but by using the sin,cos,tan equations I can only get the "blue angle".
Anyone that knows how to tackle this problem? It needs to work for all respective locations of both points to one another...
I tried the following code, but that does only result in the blue angle as expected...
heading_s=atand((y_ip-y_s)/(x_ip-x_s));

採用された回答

Jon
Jon 2020 年 3 月 12 日
編集済み: Jon 2020 年 3 月 12 日
I would think that you could use atan2 or atan2d (if you want result in degrees) for this.
For example
x1 = [2;1] % first point
x2 = [-1;-1] % second point
delta = x2 - x1 % vector that points from x1 to x2
heading = atan2d(delta(2),delta(1))
which results in
heading =
-146.3099
  2 件のコメント
Jon
Jon 2020 年 3 月 12 日
edited above,originally I had arguments in reverse order
Jon
Jon 2020 年 3 月 12 日
編集済み: Jon 2020 年 3 月 12 日
If you want the heading to give conventional compass reading (N = 0, E = 90, S = 180, W = 270 you can use
heading = atan2d(delta(2),delta(1))
compassHeading = mod(90-heading,360)

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by