提问人:BoxBishop 提问时间:4/8/2023 更新时间:4/8/2023 访问量:102
计算物体在 3D 空间中的旋转,其中输入为 3D 空间中的 2 个点
Calculating rotation of object in 3D where input is 2 points in 3D space
问:
我在 3D 图形中的初学者任务中遇到了问题 - 我有一个对象(为简单起见,假设它是一个圆柱体/线),圆柱体设置在它的局部点 0,0,0,0 并且总长度为 1(0,5 向前,0,5 向后,0,5 半径)。这样我就可以随心所欲地应用平移/旋转。
我想通过在 3D 空间中传递 2 个点来旋转这个对象 - 假设 P1=(0,0,0),P2=(10,10,10)(可能是向上向量?),我的对象通过这个点。
这是粗略的预期结果 - 想要计算欧拉角或四元数旋转来实现它:
下面的代码在我自己的引擎中运行良好,但如果任何点具有 Z(我使用 X,Y,Z,其中 Z = 向上/向下)位置 !=0,它就会出现问题。
public static Rotation RotationSpanningBetween2Points(VertexPosition vertexStart, VertexPosition vertexEnd)
{
double dx = vertexEnd.position.X - vertexStart.position.X;
double dy = vertexEnd.position.Y - vertexStart.position.Y;
double dz = vertexEnd.position.Z - vertexStart.position.Z;
return new Rotation(
RadToDeg(Math.Atan2(dz, dy)),
RadToDeg(Math.Atan2(dz, dx)),
RadToDeg(Math.Atan2(dx, dy)));
}
解决方案似乎有些简单,但它逃脱了我。
答: 暂无答案
评论