在 3D 空间中沿 Y 轴的一个角度在随机点处旋转单位向量

Posted

技术标签:

【中文标题】在 3D 空间中沿 Y 轴的一个角度在随机点处旋转单位向量【英文标题】:Rotation of a unit vector at a random point iby an angle along Y axis in 3D space 【发布时间】:2018-08-27 06:54:22 【问题描述】:

我还附上了示意图来描述我的问题。

    我需要将向量 V 与基点 P 旋转一个角度并找到新的向量 V'。

    旋转轴是关于点 P 处的局部 y 轴(平行于全局 Y 轴)

    随后,我需要围绕平行于全局 Y 轴的 x 轴旋转初始向量 V。

旋转的主要原因是在P点找到新的向量V'。两次旋转都是独立的,每次旋转都提供一个新的V'。我在 VB.net 中对此进行编程,输出是新向量 V' 的 double()。

【问题讨论】:

到目前为止你尝试过什么?你能发布你的代码吗? 我还没有开始编码。我试图从网上读到我需要将点 P 转换为原点,与旋转矩阵相乘以沿 Y 轴旋转并从原点转移回点 P。我不知道从哪里开始,因为它没有提到向量 V。这就是我感到困惑的地方。 【参考方案1】:

只需独立应用两个旋转(请参阅Wikipedia)。基点在这方面没有任何作用,因为它只是一个永远不会改变的恒定偏移量。如果我的描述正确,您需要以下内容:

//rotation about y-axis
iAfterRot1 = cos(phi1) * i + sin(phi1) * k
jAfterRot1 = j 
kAfterRot1 = -sin(phi1) * i + cos(phi) * k

//rotation about x-axis
iAfterRot2 = iAfterRot1
jAfterRot2 = cos(phi2) * jAfterRot1 - sin(phi2) * kAfterRot1
kAfterRot2 = sin(phi2) * jAfterRot1 + cos(phi2) * kAfterRot1

【讨论】:

嗨 Nico,我尝试按照您的步骤操作,这是我取得的结果

以上是关于在 3D 空间中沿 Y 轴的一个角度在随机点处旋转单位向量的主要内容,如果未能解决你的问题,请参考以下文章

获取 3D numpy 数组中沿轴的连续非 nans 值总和的最大值

CSS进阶知识点--3D转换及perspective 属性

在 3D 中查找 X、Y 和 Z 轴的角度 - OpenGL/C++

将围绕任意轴的旋转解析为围绕 X、Y 和 Z 轴的旋转

为 3D 空间中的点生成随机运动

在OpenGL中保存旋转矩阵