在给定顶点坐标的情况下,在三维中找到三角形的旋转角度

时间:2013-09-24 14:10:17

标签: math 3d geometry trigonometry

我尝试旋转并平移3D中的等边三角形,直到他的顶点到达某个坐标。

顶点坐标 F,G,H F',G',H'是已知的:

enter image description here

我能够像这样找到新的质心c'坐标:

c'.x = ( F'.x + G'.x + H'.x ) / 3
c'.y = ( F'.y + G'.y + H'.y ) / 3
c'.z = ( F'.z + G'.z + H'.z ) / 3

翻译三角形没问题。但我找不到计算将F'G'H'三角形放在正确位置所需的旋转的方法......

我必须知道三角形F'G'H'必须围绕每个轴(x,y,z)旋转多少度,知道初始三角形的旋转是0°

通过每个轴的旋转,我正在谈论这个:

enter image description here

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

技巧是使用叉积b4和旋转后找到三角形的法向量

v1 = (F.x - G.x, F.y - G.y, F.z - G.z)
v2 = (F.x - H.x, F.y - H.y, F.z - H.z)
n  = cross_prod(v1, v2) # see http://en.wikipedia.org/wiki/Cross_product
n  = n / norm(n) # normalize to unit vector

v'1 = (F'.x - G'.x, F'.y - G'.y, F'.z - G'.z)
v'2 = (F'.x - H'.x, F'.y - H'.y, F'.z - H'.z)
n'  = cross_prod(v'1, v'2)
n'  = n' / norm(n')

rot = arc_cos(n.x * n'.x + n.y * n'.y + n.z * n'.z)