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

时间:2016-01-31 18:33:30

标签: java math vector multidimensional-array 3d

对于我的播放器模型我在特定位置有几个身体部位,如下所示: [-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);
}

希望有人可以帮助我

1 个答案:

答案 0 :(得分:0)

我不完全确定你在方程式中使用的数学运算,所以我只是按照我教导的方式将其从矢量幅度和角度转换为点。您要寻找最后一点的等式是:P_f = new double {4cos(angle) + x_0, 4sin(angle) + y_0, z_0}

请注意,仅适用于单向旋转。换句话说,它只适用于xy平面的旋转,而不适用于z平面的旋转。这是因为对于多个平面中的旋转,您将在每个平面中需要一个角度

<强>参考

First

第二点的公式

Second

3-D

中的角度示例

Third