我试着把物体从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在弧的中间。这样做对吗?你知道吗
圆的中心是M=(a+b)/2,半径r=| a-b |/2。当你从M开始沿着垂直于(b-a)的方向移动时,你会发现点c:
v是垂直于(b-a)的任何向量。求垂直向量v的一种方法是取(b-a)与不平行于(b-a)的任意向量的叉积
正如前面提到的,有许多解决这个问题的方法,这取决于v
让
u
和v
成为你的两个向量。规范化这两个向量,分别得到u'
和v'
。计算u'
和v'
的叉积,得到一个与二者正交的向量w
。规范化w
以获得w'
。你知道吗现在需要创建一个围绕轴
R
的旋转w'
,这样R * u' = v'
。只要u
和v
不是共线,就只有两个选项,分别对应于顺时针和逆时针方向。其中一个较短,与最佳旋转相对应。你知道吗维基百科的这一节描述了如何构建
R
:http://en.wikipedia.org/wiki/Rotation_matrix#Rotation_matrix_from_axis_and_angle轴是
w'
,角度是arccos(dot(u', v'))
,因为单位向量的点积是它们之间角度的余弦。你知道吗相关问题 更多 >
编程相关推荐