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


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Karim Rafikov                        2:5049/143.10  25 Apr 2002  08:31:22
 To : Evgeniy Jirnov
 Subject : Мадератор прости за флейм
 -------------------------------------------------------------------------------- 
 
 
  EJ> Сабж, а то я с математикой и векторами не очень дружу: есть квадратный
  EJ> рисунок размером NxN, как нарисовать 3-х мерный куб(6-ти гранный),
  EJ> каждая сторона которого будет покрыта этим рисунком? Причем
  EJ> длина/высота/ширина куба - совпадает с картинкой - N.
 
  EJ> В общем-то мне надо узнать как одну сторону(повернутую на
  EJ> XAngle,YAngle и/или ZAngle) нарисовать с текстурой, а с остальными я
  EJ> уж сам как-нибудь. Подскажите как можно более проще, а то я в этом как
  EJ> свинья в апельсинах. Оптимальность не важна, красивость, Афигенное
  EJ> сглаживание и прочие навороты тоже не нужны. Hужно только изобразить.
  EJ> ПАМАГИТЕ, А ТО ПОМРУ! :) Заранее спасибо!
 
 Hе помирай, живи!
 Значит так, куб твой - это набор точек в трехмерном пространстве. Исходные
 координаты посчитай сам. Для простоты помести один из его углов в начало
 координат пример:
 12 56 - Вот куб, две его стороны. Точка 3 - (0, 0, 0), точка 7 - (0, 1, 0),
 34 78 точка 4 - (1, 0, 0), точка 6 - (1, 1, 1).
 Короче расположи куб так, чтобы его стороны были паралельны координатным
 плоскостям, а целые числа на осях сопоставь с точками рисунка, следующая точка -
 следующее число. Теперь я буду говорить не о кубе, а о наборе точек. Точку
 запишем как вектор, писали (x, y, z) а теперь |x|
                                               |y|
                                               |z|
                                               |1|
  Последняя единица - это размер точки. Теперь вспомни как умножать матрицу на
 столбец (наш новый вектор).
 Вот матрица, где sa - синус альфа, ca - косинус альфа, углы:
 a - поворот в плоскости xy от x к y
 b - -//- zx от z к x
 y - -//- yz от y к z
 Естествеено что x y и z образуют правую тройку(Как в учебнике).
 
 Теперь умножая каждую точку из массива на матрицу:
 (cacy-sasbsy   sacb    casy+sasbcy    0)
 (-sacy-casbsy  cacb    -sasy+casbcy   0)
 (-cbsy         -sb     cbcy           0)
 (   0           0         0           1)
 Точки выполнят все три поворота.
 Если потом умножить их на матрицу
 (1 0 0 x)
 (0 1 0 y)
 (0 0 1 z)
 (0 0 0 k)
 То все точки линейно сдвинуться на (x, y, z) и размер умножится на k.
 
 Вот и все. Если пишешь на С++ могу помочь исходниками собственного производства.
 
                 Храни вас бог, Karim Rafikov.
 --- УТВЕРЖДАЮ. MSG-редактор капитан 2.5 ранга Голд Дедович фор ДОС UNREG
  * Origin: у, царь, вздрогнули! (2:5049/143.10)
 
 

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

 Тема:    Автор:    Дата:  
 Помогите pls...   Evgeniy Jirnov   24 Apr 2002 20:48:38 
 Мадератор прости за флейм   Karim Rafikov   25 Apr 2002 08:31:22 
 Помогите pls...   Vovanius Uryvaeff   25 Apr 2002 13:57:49 
 Помогите pls...   Alex Astafiev   25 Apr 2002 11:17:02 
 Помогите pls...   Michael Bolotnicov   07 Jun 2002 21:25:00 
Архивное /ru.algorithms/239353cc7c895.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional