三維座標旋轉轉換公式(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) + ")";
}