两矩阵间的半圆运动

2024-04-26 11:56:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着把物体从a点移动到b点,在三维空间中做一个弧形运动。我最近一直在读矩阵,我试图让我的头周围他们,但没有结果。 比如说:

a = (x.100.0,y.200.0,z.300.0)
b = (x.-300.0,y.-100.0,z.0.0)
c = finding the middle of a,b matrices
d = start at a, do something with math.pi and multiplying the c matrices to give you and arc motion over to b. 

然后计算弧的位置,c在弧的中间。这样做对吗?你知道吗


Tags: andofthetomiddle矩阵dostart
2条回答

圆的中心是M=(a+b)/2,半径r=| a-b |/2。当你从M开始沿着垂直于(b-a)的方向移动时,你会发现点c:

c = M + r * v/abs(v)

v是垂直于(b-a)的任何向量。求垂直向量v的一种方法是取(b-a)与不平行于(b-a)的任意向量的叉积

v = (b-a) <crossproduct> (x.0, y.0, z.1)

正如前面提到的,有许多解决这个问题的方法,这取决于v

uv成为你的两个向量。规范化这两个向量,分别得到u'v'。计算u'v'的叉积,得到一个与二者正交的向量w。规范化w以获得w'。你知道吗

现在需要创建一个围绕轴R的旋转w',这样R * u' = v'。只要uv不是共线,就只有两个选项,分别对应于顺时针和逆时针方向。其中一个较短,与最佳旋转相对应。你知道吗

维基百科的这一节描述了如何构建Rhttp://en.wikipedia.org/wiki/Rotation_matrix#Rotation_matrix_from_axis_and_angle

轴是w',角度是arccos(dot(u', v')),因为单位向量的点积是它们之间角度的余弦。你知道吗

相关问题 更多 >