繁体   English   中英

向量围绕3D空间中具有特定x,y&z角度的点的旋转[JAVA]

[英]Rotation of a Vector around a point in 3D space with specific x,y&z angles [JAVA]

对于我的播放器模型,我在特定位置上有几个身体部位,例如:右臂在[-2,2,0],而手臂的第二部分在[-2,6,0]现在我要旋转第一个手臂的第二部分,而手臂的第二部分要在第一部分的末端。 我已经有一些适用于mycode的东西,但是要点并不总是转换为正确的位置。

这是我到目前为止所拥有的:

public static Vector3d rotateVectorAroundOrigin(Vector3d angle, Vector3f origin, Vector3f point) {
    double radius = Math.sqrt(((point.x - origin.x) * (point.x - origin.x))
            + ((point.y - origin.y) * (point.y - origin.y)) + ((point.z - origin.z) * (point.z - origin.z)));

    double newX = origin.x + (radius * (Math.sin(angle.z) * Math.sin(angle.y)));
    double newY = origin.y + (radius * Math.cos(angle.x));
    double newZ = origin.z + (radius * Math.sin(angle.y) * Math.cos(angle.y) * Math.sin(angle.z));

    return new Vector3d(newX, newY, newZ);
}

希望有人能帮助我

我不确定您在方程式中使用的数学,因此我只是想出了将向量大小和角度转换为点的方法。 您要寻找的终点方程为: P_f = new double {4cos(angle) + x_0, 4sin(angle) + y_0, z_0}

请注意,此操作只能沿一个方向旋转 换句话说,它仅适用于xy平面中的旋转,而不适用于z平面中的旋转。 这是因为要在多个平面中旋转,每个平面需要一个角度

参考

第一

第二点方程

第二

3-D中的角度示例

第三

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM