Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Sergey Borodachev                    2:5048/7.6     04 Jun 2001  16:42:00
 To : Vasya Kovall
 Subject : Помогите с вращением!!!
 -------------------------------------------------------------------------------- 
 
 
  03 Jun 01 01:41, Vasya Kovall wrote to All:
 
  VK>     Имеется прямоугольник, нужно устроить вращение вокруг одной из
  VK> его
  VK> точек в плоскости экрана. Попробовал через матрицу преобразования
  VK> типа: |cos Y   sin Y|
  VK>       |-sin Y  cos Y|
 
 1. Матрица у тебя неправильная. См. ниже корректный вариант.
 2. Hужно сначала сопоставить центр координатной плоскости с точкой вращения, в
 твоем случае это вершина прямоугольника, а затем уже применять матрицу поворота.
 
  VK> ничего нормального не получилось.
 
 Это потому, что ты забыл добавить к-т нормализации ;-)
 
  VK>  Дайте либо исодник, либо посоветуйте что-нибудь по этому поводу.
 Фрагмент книги Андре Ла Мот`а:
 
 >ъ-ъ-[Begin of Windows Clipboard]-ъ-ъ<
 
     Главная матрица перемещений
 ----------------------------------
 Главной матрицей перемещений будем называть такую матрицу, в которой
 x_translation и y_translation - это коэффициенты перемещения объекта по
 осям X и Y. Вот как она выглядит:
 і                               і
 і1              0              0і
 і0              1              0і
 іx_translation  y_translation  1і
 і                               і
     Главная матрица масштабирования
 --------------------------------------
 Главная матрица масштабирования - это такая матрица, в которой scale_x и
 scale_y - это коэффициенты масштабирования объекта по координатам x и y:
 
 іscale_x   0         0і
 і0         scale_y   0і
 і0         0         1і
 
 Такая матрица позволяет выполнять неоднородное масштабирование - мы можем
 задать один масштаб по оси X и другой - по оси Y. Таким образом, если мы
 хотим масштабировать объект однородно, то должны задать scale_x = scale_y.
 
                               - 107 -
      Главная матрица поворотов
  -------------------------------
  В главной матрице поворотов angle - это угол, на который вы хотите
  повернуть объект:
   іcos(angle)  -sin(angle)  0і
   іsin(angle)  cos(angle)   0і
   і0           0            1і
     Общая матрица масштабирования, поворотов и перемещений
   ----------------------------------------------------------
 Hаступает торжественный момент. Теперь мы возьмем матрицы перемещения,
 масштабирования и поворота и перемножим их (получим их конкатенацию), чтобы
 получить общую матрицу, реализующую все три функции сразу. Окончательно
 матрица будер выглядеть так:
 
 іscale_x x cos(angle)   scale_x x -sin(angle)     0і
 іscale_y x sin(angle)   scale_y x cos(angle)      0і
 іx_translation          y_translation             1і
 
 Если вы теперь умножите вершины объекта на эту матрицу, то получите
 перемещенный, повернутый и масштабированный объект. Hе слабо, а?
 
     Компонент нормализации вершины
  ------------------------------------
 Я совсем упустил одну маленькую деталь, которую вы уже, наверное, заметили.
 "Как мы можем умножить вершину на матрицу размером 3х3?" Hеплохой вопрос.
 Рад, что вы спросили. Чтобы выполнить это, мы должны изменить представление
 структуры вершин, добавив компонент нормализации. Компонент нормализации -
 это просто единица, добавленная в конец структуры, описывающей каждую
 вершину.
 
 >ъ-ъ-[End of Windows Clipboard]-ъ-ъ<
 
 With respect, $erg. mailto:iam_serg@chat.ru
 ... Взялся за грудь - говори что-нибудь
 --- GoldED+/386 1.1.4.5
  * Origin: Life is suck, but nothing better is known yet :( (2:5048/7.6)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Помогите с вращением!!!   Vasya Kovall   03 Jun 2001 01:41:51 
 Помогите с вращением!!!   Alexei Frounze   03 Jun 2001 08:52:58 
 Помогите с вращением!!!   Vasya Kovall   04 Jun 2001 00:10:14 
 Помогите с вращением!!!   Alexei Frounze   04 Jun 2001 01:34:03 
 Re: Помогите с вращением!!!   Yurij Zabelyshynskij   04 Jun 2001 01:08:18 
 Re: Помогите с вращением!!!   Serge Kanilo   04 Jun 2001 01:12:21 
 Помогите с вpащением!!!   Edik Ryzhov   04 Jun 2001 10:27:32 
 Re: Помогите с вpащением!!!   Paul Yanchenko   04 Jun 2001 04:51:12 
 Помогите с вращением!!!   Alex Cvetkov   04 Jun 2001 19:12:19 
 Помогите с вращением!!!   Vasya Kovall   06 Jun 2001 00:43:22 
 Re: Помогите с вращением!!!   Andrey Dashkovsky   03 Jun 2001 11:12:20 
 Re^2: Помогите с вращением!!!   Kirill Barashkin   18 Jun 2001 21:55:16 
 Помогите с вращением!!!   Sergey Borodachev   04 Jun 2001 16:42:00 
 Помогите с вращением!!!   Uriy Iovkov   05 Jun 2001 13:48:24 
Архивное /ru.algorithms/23173b1bbccb.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional