math - 给定三角形顶点坐标,求 3D 三角形的旋转角度

标签 math 3d geometry trigonometry

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

顶点坐标F,G,HF',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

有什么想法吗?

最佳答案

技巧是使用叉积 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)

关于math - 给定三角形顶点坐标,求 3D 三角形的旋转角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18983977/

相关文章:

math - float 学有问题吗?

programming-languages - 体素 3d "grid"

javascript - Ashima Perlin 噪声着色器不适用于最新版本的 Three.JS

c++ - 如何从中心原点转换为底部原点?

c++ - 从一组顶点计算正方形的数量,C++

algorithm - 使用帕累托原则 (80/20),如果给定 0-100 之间的输入,如何计算真实百分比

python - 查找(或暴力破解)值列表和数学运算的数学表达式

用于移动形状的 JavaFx 按钮事件处理程序

math - 什么时候适合使用浮点精度数据类型?

math - 两个圆盘相交区域的均匀采样