gpt4 book ai didi

javascript - 旋转后的3D坐标

转载 作者:行者123 更新时间:2023-11-28 01:13:46 25 4
gpt4 key购买 nike

我有 2 点:C 和 P

我想在 3 个维度上围绕 C 旋转 P。

如何计算P的新位置?

我有两个 Angular :“偏航”和“俯仰”。

偏航使 P 在“x”轴上围绕 C 移动,因此它围绕该点向左和向右移动。

俯仰使 P 在“y”轴上围绕 C 移动,因此它围绕该点向上和向下移动。

Z,深度在 + 方向上向您移动,在 - 方向上远离您

当然,我也想让它适用于“中间”位置,例如 45 度偏航和 45 度俯仰。

偏航和俯仰以 DEG 给出,然后转换为 RAD(在此代码之前,因此代码使用 RAD)

p.x = c.x + Math.sin(yaw) * Math.sin(pitch);
p.y = c.y + Math.cos(yaw);
p.z = c.z + Math.cos(yaw) * Math.cos(pitch);

想象一个球体和一个点,我想移动球体表面上的点。

这有时有效,有时无效。我错过了什么?

抱歉,如果这是重复的,我不知道应该搜索什么。

这是关于我的问题的 fiddle :http://jsfiddle.net/Jm6Lt/2/

计算蓝色球体的位置,白色球体围绕红色球体的中心旋转。

最佳答案

你写下的是围绕C半径为1的球体上的球坐标。

查找“旋转矩阵”和“给定旋转”,这些是旋转给定点的操作。您正在寻找的操作类型将采用以下形式

P'=C+R*(P-C), 

其中 R 是旋转矩阵。

<小时/>

你的球坐标稍有错误,它们应该是:

p.x = c.x + Math.sin(yaw) * Math.sin(pitch);
p.y = c.y + Math.cos(yaw);
p.z = c.z + Math.sin(yaw) * Math.cos(pitch);

那么(yaw,pitch)=(0,0)的向量是(0,1,0)(在C翻译之前)并且坐标描述它的旋转,首先在 y-z 平面上绕 x 轴以偏航 Angular 旋转,然后绕 y 轴以俯仰 Angular 旋转。

关于javascript - 旋转后的3D坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24104269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com