![]() |
|
||||||||||
|
|
|
|||||
|
У меня есть такая функция для поворота точек вокруг оси Y:
rotateY = function (targed, degree):Void { var newAngle:Number = degree*rad; var sin = Math.sin(newAngle); var cos = Math.cos(newAngle); for (var i = 0; i<4; i++) { var x = cos*targed.vertex[i].x-sin*targed.vertex[i].z; var z = cos*targed.vertex[i].z+sin*targed.vertex[i].x; targed.vertex[i].z = z; targed.vertex[i].x = x; } }; Но эффект получается не тот. Объект начинает вращаться как сумашедший пока Angle не будет равным 0. Получается что параметр degree работает скорее как скорость вращения чем как угол. Что нужно изменить в функции rotateY чтобы параметр degree менял угол не относительно а абсолютно?
__________________
Он манэ падмэ ХУМ! |
|
|||||
|
такая функция поворота не годится для твина угла, она никак не связана с абсолютным углом, а только поворачивает на заданный угол
зная на сколько надо повернуть можно в цикле (onEnterFrame|setInterval) вызвать ее нужное количество раз с постоянным значением поворота |
|
|||||
|
Я пробовал вот так. Но явно чето не то в плане трегонометрии. И при обратном вращении артефактоф много:
function rotateYto(targed, a) { var newAngle:Number = a*rad; var sin = Math.sin(newAngle); var cos = Math.cos(newAngle); var x = targed.vertex[0].x; var z = targed.vertex[0].z; var R = Math.sqrt(x*x+z*z); var _b = a*rad; for (var i = 0; i<4; i++) { x = Math.cos(_b)*R; z = Math.sqrt(R*R-x*x); if (targed.vertex[i].x<0) { x = 0-x; z = 0-z; } targed.vertex[i].z = z; targed.vertex[i].x = x; } render(rektangl); } ![]() Добавлено через 65 часов 58 минут Поворот точек на заданный угол. вот как получилось:
__________________
Он манэ падмэ ХУМ! |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|