簡體   English   中英

Java Vector3計算兩個向量之間的角度

[英]Java Vector3 calculate angle between two vectors

我需要測量兩個向量之間的角度。 我有充滿緯度和經度的.kml文件

54.90627884784906, 23.98023512082725
54.90568158443394, 23.98021489919758
54.9055211876991, 23.97995622451836
...

所以這是我制作矢量的方式:

Vector3 firstVec = new Vector3(new Point3((float)54.90627884784906, (float)23.98023512082725, 0),
                    new Point3((float)54.90568158443394, (float)23.98021489919758, 0));

Vector3 secondVec = new Vector3(new Point3((float)54.90568158443394, (float)23.98021489919758, 0),
                    new Point3((float)54.9055211876991, (float)23.97995622451836, 0));

這是我如何測量兩個向量之間的角度

double angle =  firstVec.angle(secondVec);

這是我的結果:

0.9824845194816589

這是我手機上代表這些坐標的圖像。 在此處輸入圖片說明 顯然我的角度是不正確的。 如何計算呢?

您的向量是錯誤的。

緯度和經度是球面角度坐標。 我建議您在開始之前將它們轉換為3D直角坐標。 一旦有了這些,就可以使用點積輕松計算以弧度為單位的角度。

您還應該知道lat和lon以度數表示-在開始在trig函數中使用它們之前將其轉換為弧度。

兩個向量之間的夾角為Math.acos( 點積 )結果以Math.Pi/180為單位,因此您要乘以Math.Pi/180

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM