2016-12-10 4 views
0

Мне нужно создать функцию вращения, которая будет использоваться для поворота элементов вокруг, она почти срабатывает отдельно от попытки -sin. Не существует функции, которая позволяет это.Создание матрицы вращения

Rotation matrix

Matrix.createRotation = function (rotation) { 

    return new Matrix(Math.cos(rotation), Math.sin(rotation), 0, 
     Math.sin(rotation), Math.cos(rotation), 0, 0, 0, 1); 
}; 
+0

Что-то вроде '(-1) * Math.sin (rotation)'? Разве это не работает? Как и в функции, должно быть так: «вернуть новую матрицу (Math.cos (вращение), (-1) * Math.sin (вращение), 0, Math.sin (вращение), Math.cos (вращение), 0 , 0, 0, 1); ' – TheNavigat

+0

Да, вы правы, это действительно работает. – Quad117

+0

В вашем примере вы даже не отрицаете результат 'Math.sin (rotation)'. Это должно быть '-Math.sin (rotation)' - оно быстрее, чем умножение на -1. Как вы ожидаете '-sin (rotation)', если вы не отрицаете результат 'sin (rotation)'? – plasmacel

ответ

1

Вы должны свести на нет результат Math.sin(rotation) в -Math.sin(rotation):

Matrix.createRotation = function (rotation) 
{ 
    return new Matrix(
     Math.cos(rotation), -Math.sin(rotation), 0, 
     Math.sin(rotation), Math.cos(rotation), 0, 
     0, 0, 1 
    ); 
}; 

Обратите внимание, что -Math.sin(rotation) быстрее, чем (-1)*Math.sin(rotation).

Смежные вопросы