2012-02-22 4 views
3

Как рассчитывается вектор центра в этом примере или в любом примере. WolframAlpha: http://www.wolframalpha.com/input/?i=rotate+90+degrees+center+%283%2C0%29Вращающаяся матрица с центром

+2

Не вы предоставляете это? – Blender

+0

Я плохо спал. Вектор, который добавляется к матрице вращения, равен (3, -3), как я получаю это значение, я не прошел его. – Starfighter911

ответ

7

Однородные координаты:

  [ cos(theta) -sin(theta) 0 ] 
Rotate = [ sin(theta) cos(theta) 0 ] 
      [  0   0  1 ] 

      [ 1 0 x ] 
Translate = [ 0 1 y ] 
      [ 0 0 1 ] 

Так выполнить ваше преобразование, вы умножаете Translate(x, y) * Rotate(theta) * Translate(-x, -y) и получить матрицу преобразования.

+0

+1 для записи его – alecnash

+1

Использовал ли вы одно и то же имя переменной для вращения и координаты x случайно? – SwiftsNamesake

+0

Не должно быть T (x, y) * R * T (-x, -y)? – Dschoni

1

Или в одной функции даного

Vector RotateAbout(Vector node, Vector center, double angle) 
{ 
    return new Vector(
     center.X + (node.X-center.X)*COS(angle) - (node.Y-center.Y)*SIN(angle), 
     center.Y + (node.X-center.X)*SIN(angle) + (node.Y-center.Y)*COS(angle) 
    }; 
} 
Смежные вопросы