posts | comments
29Mar

Вектори в просторі Однорідні координати Матриці перетворень

No comments
« Поворот площини за допомогою миші   |   3D - Графіка »

| 0 0 1 -1 |

| 0 0 0 1 |

x’ = 2 * x + 1

у’ = 3 * у + 2

z’ = 1 * z - 1

w’ = 1

Дана матриця визначає наступне перетворення: розтягування по осі x в два рази, по осі у в три рази і перенесення на вектор (1, 2 -1). При цьому матриця M застосовується до вектора-стовпця зліва:

| M11 M12 M13 M14 | | px |

p’ = M * p = | M21 M22 M23 M24 | * | py |

| M31 M32 M33 M34 | | pz |

| M41 M42 M43 M44 | | 1 |

Відмітимо, що вектор p’ також є вектором-стовпцем. Насправді можливі дві, рівноправні з погляду математики, запису:

1) Вектор записується як стовпець:

| 2 0 0 1 | | x | | 2 * x + 1 |

| 0 3 0 2 | * | у | = | 3 * у + 2 |

| 0 0 1 -1 | | z | | 1 * z - 1 |

| 0 0 0 0 | | 1 | | 1 |

2) Вектор записується як рядок, матриця транспонується:

| 2 0 0 0 |

| x у z 1 | * | 0 3 0 0 |

| 0 0 1 0 |

| 1 2 -1 0 |

= | 2 * x + 1 3 * у + 2 1 * z - 1 1 |

C точки зору самого перетворення ці записи еквівалентні. Яку з них використовувати - це питання домовленості. На практиці, і в OPENGL і в DIRECTX використовується перший варіант, з урахуванням того, що матриці укладаються в пам’яті по стовпцях . Тобто матриця

| M11 M12 M13 M14 |

| M21 M22 M23 M24 |

| M31 M32 M33 M34 |

| M41 M42 M43 M44 |

в лінійній пам’яті виглядатиме таким чином:

M11 M21 M31 M41 M12 M22 M32 M42 M13 M23 M33 M43 M14 M24 M34 M44

В тривимірній математиці також прийнято використовувати перший варіант запису.

Прим. Іноді, в теоретичному розділі зустрічатимуться схожі вставки, що відносяться до практики. В основному це стосуватиметься прийнятих позначень.

Матриця не аффінного перетворення


Tags: , , , , , , , ,

3D теорія


Схожі записи

Categories: 3D теорія

Sunday, March 29th, 2009 at 09:15 and is filed under 3D теорія. You can follow any responses to this entry through the feed. Both comments and pings are currently closed.