Я пытаюсь повернуть трехмерный объект, вращение вокруг оси z работает нормально, но вращение вокруг осей x / y дает неожиданные результаты.
это функция, которую я использую для вращения куба вдоль его ось y
function rotateY(m3do, angleD) {
// this is the distance of z from origin
var pt = 3.5;
// subtracting pt from z to translate by cube to the origin
var m3d = [ m3do[0], m3do[1], m3do[2] - pt ];
// convering angle from deg to radians
var angle = angleD * Math.PI / 180;
var toRet = [
(m3d[0] * Math.cos(angle)) + (m3d[2] * Math.sin(angle)),
m3d[1],
-(m3d[0] * Math.sin(angle)) + (m3d[2] * Math.cos(angle))
];
toRet[2] += pt;
return toRet;
}
моя функция проецировать 3d в 2d выглядит следующим образом
function get2d(m3d){
return [ m3d[0] * (2 / m3d[2]), m3d[1] * (2 / m3d[2]) ];
}
Я хочу знать, где я иду не так