transform x,y coordinate to angle

44 ビュー (過去 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 件)

カテゴリ

Help Center および File ExchangeCartesian Coordinate System Conversion についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by