Java Vector3计算两个向量之间的角度

时间:2016-04-14 10:42:42

标签: java angle

我需要测量两个向量之间的角度。我有.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

这是我手机上代表这些坐标的图像。 enter image description here 显然我的角度不正确。如何计算?

2 个答案:

答案 0 :(得分:2)

你的载体错了。

Lat和lon是球面角坐标。我建议您在开始之前将它们转换为3D中的直角坐标。一旦你有了那些,使用点积计算弧度的角度很容易。

你还应该知道lat和lon用度表示 - 在你开始在trig函数中使用它们之前将它们转换为弧度。

答案 1 :(得分:1)

两个向量之间的角度是Math.acos( Dot Product )结果是辐射,因此你乘以Math.Pi/180