我之前曾问过一个与此类似的问题,但此后又提出了一个问题,并且也未正确标记该问题,并希望在问题周围的数学上获得一些帮助。
我有一个3D球面,点在其表面上均匀分布,我知道其坐标。从这些坐标中,我试图定义一些从球体表面出来的尖峰的方向,这些尖峰沿着球体中心与坐标所在点之间的向量出现。
想法是,这些欧拉角角度对于以后校准尖峰非常有用,因此,如果我要从图像中装出所有尖峰,它们的方向大致相同。
由于球上的坐标是均匀分布的,所以我可以取x,y和z坐标的平均值作为中心,然后依次从中心向每个坐标绘制矢量。
在这种情况下,我需要计算的欧拉角首先围绕z轴,然后围绕新的y轴,最后围绕新的z轴。
我的中心点当前定义为我所有坐标的平均坐标。这是因为坐标围绕球均匀分布。
然后我用表示状态的方程式
cos(theta) = dot product of the two vectors / magnitude of each vector multiplied together
在x和y轴上的。我的一个向量是我感兴趣的向量的x和y,另一个向量是y轴(0,1)。这告诉我绕着z轴(y轴为0)的旋转。我还计算了此2D平面上直线的倾斜度,以计算我是在0到+180还是在0到-180之间工作。
然后,我使用一个简单的2D旋转矩阵将x轴绕刚计算出的角度旋转,以得到x'。
然后我以与上面相同的方式计算角度,但是这次使用x'和z'作为我的第二矢量(其中z'= z)围绕y轴进行计算。
最后,我重复上述步骤,计算出新的z''和x''并进行最终计算。
这给了我三个角度,但是当我使用quiver3命令在matlab中显示时,使用这种方法无法获得正确的方向。我相信我只是不明白如何正确地计算欧拉角,并弄乱了整个过程。
我希望比我更有知识的人可以浏览一下我计划的欧拉角计算方法,并发现任何缺陷。
谢谢。