Вращение 3d объекта и проецирование его на 2d экран - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь повернуть трехмерный объект, вращение вокруг оси 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]) ];
}

Я хочу знать, где я иду не так

...