三维坐标旋转转换公式(JavaScript)

此方法以右手坐标系为准

function rotate_z(x, y, z, angle) {
    var atopi = angle / 180 * Math.PI;
    var xtoz = x * Math.cos(atopi) - y * Math.sin(atopi);
    var ytoz = y * Math.cos(atopi) + x * Math.sin(atopi);
    var ztoz = z;
    return "开始位置:(" + x + "," + y + "," + z + ")" + "绕z轴旋转" + angle + "°,得到新的位置:(" + xtoz.toFixed(2) + "," + ytoz.toFixed(2) + "," + ztoz.toFixed(2) + ")";
}

function rotate_x(x, y, z, angle) {
    var atopi = angle / 180 * Math.PI;
    var ztox = z * Math.cos(atopi) - y * Math.sin(atopi);
    var ytox = y * Math.cos(atopi) + z * Math.sin(atopi);
    var xtox = x;
    return "开始位置:(" + x + "," + y + "," + z + ")" + "绕x轴旋转" + angle + "°,得到新的位置:(" + xtox.toFixed(2) + "," + ytox.toFixed(2) + "," + ztox.toFixed(2) + ")";

}

function rotate_y(x, y, z, angle) {
    var atopi = angle / 180 * Math.PI;
    var xtoy = x * Math.cos(atopi) - z * Math.sin(atopi);
    var ztoy = z * Math.cos(atopi) + x * Math.sin(atopi);
    var ytoy = y;
    return "开始位置:(" + x + "," + y + "," + z + ")" + "绕y轴旋转" + angle + "°,得到新的位置:(" + xtoy.toFixed(2) + "," + ytoy.toFixed(2) + "," + ztoy.toFixed(2) + ")";
}

猜你喜欢

转载自blog.csdn.net/qq_34797972/article/details/81203647