如何旋转由x y z定义的对象围绕x y或z轴

时间:2013-05-05 00:11:00

标签: java 3d rotation geometry coordinates

我正在使用一个可视化分子的程序。分子由每个原子的多个x,y和z值表示。我希望能够做到的是,在每个坐标上进行一些数学计算,并使得到的分子在其中一个轴上旋转。 我尝试过使用这些公式:

y' = y*cos q - z*sin q

z' = y*sin q + z*cos q

x' = x

和Y轴和Z轴对应的。在180度的旋转中,所得分子看起来很好,但似乎是对映体(镜像)。任何其他角度(360除外)使分子彼此分开。

我所希望的是所有原子都会“一起”旋转。如果重要的是我在Java工作。

感谢您的帮助

已编辑的代码

if (axis == 'X') {
        // y' = y*cos q - z*sin q
        // z' = y*sin q + z*cos q
        // x' = x
        y = y * Math.cos(radians) - z * Math.sin(radians);
        z = y * Math.sin(radians) + z * Math.cos(radians);
    }
    else if(axis == 'Y'){
        //z' = z*cos q - x*sin q
        //x' = z*sin q + x*cos q
        //y' = y
        z = z * Math.cos(radians) - x * Math.sin(radians);
        x = z * Math.sin(radians) + x * Math.cos(radians);
    }
    else if(axis == 'Z'){
        //x' = x*cos q - y*sin q
        //y' = x*sin q + y*cos q 
        //z' = z
        x = x * Math.cos(radians) - y * Math.sin(radians);
        y = x * Math.sin(radians) + y * Math.cos(radians);
    }

编辑2.发现错误。我正在计算第一个坐标值,然后分配它。当我尝试计算第二个坐标时,我更改了第一个坐标,因此得到了第二个坐标的错误值。对不起,我很抱歉

0 个答案:

没有答案