【问题标题】:Equation for finding vertices of a rectangular prism after rotations矩形棱柱旋转后求顶点的方程
【发布时间】:2021-11-06 13:40:13
【问题描述】:

我正在尝试找到一个方程式,该方程式将帮助我找到一个长方形棱柱在其围绕x,y, and z 维度中的中心点旋转后的顶点。

例如,我得到一个边为lengths: l = 10, w =4, h = 1 (l corresponding to x axis, w to y axis, and h to z axis ) 的矩形棱柱。我也知道棱镜一直是rotated30 degrees about the x axis45 degrees about the y axis20 degrees about the z axis. 如果我的中心point is (1,3,5),我想找到一个方程来确定棱镜旋转后我的每个顶点将在哪里结束完全。

我在2 dimensions 中找到了许多可以给我答案的资源,但我还没有看到可以帮助我在我正在寻找的所有3 dimensions 中找到这个等式的资源。

任何帮助将不胜感激! (我不一定需要上面给出的例子的答案,只是一个如何解决它的方程会对我有很大帮助!)

【问题讨论】:

标签: python algorithm matrix rotation


【解决方案1】:

给定中心点和边长,矩形棱柱的所有顶点可以计算如下:

center: (x,y,z)
v = (x±l/2,y±w/2,z±h/2)

使用所有可能的正负组合,我们得到所有顶点。然后,将矩形棱柱平移到中心:v = v - center。然后,围绕每个轴旋转平移的顶点:

绕x轴旋转:

v.y = v.y*cos(theta) - v.z*sin(theta)
v.z = v.z*cos(theta) + v.y*sin(theta)

绕y轴旋转:

v.x = v.x*cos(theta) + v.z*sin(theta)
v.z = v.z*cos(theta) - v.x*sin(theta)

绕z轴旋转:

v.x = v.x*cos(theta) - v.y*sin(theta)
v.y = v.y*cos(theta) + v.x*sin(theta)

(上面提到的thiskhan学院文章中的方程式comment

最后,将顶点翻译回来 (v = v + center)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    相关资源
    最近更新 更多