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


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Vovanius Uryvaeff                    2:5020/175.2   26 Nov 2002  21:57:49
 To : Alexander Samarin
 Subject : Быстрая закраска
 -------------------------------------------------------------------------------- 
 
 Tue Nov 26 2002 11:51, Alexander Samarin wrote to All:
 
  AS>                              *|||, All!*
 
  AS>     Почту за предыдущие 3 месяца я потерял, так, что сильно не пинайте
  AS> т.к.
  AS> вроде пробегала здесь такая тема.
 
  AS>     Имею 3-х мерную модель (гоблин) состоящий из полигонов
  AS> (треугольников), так вот текстурирование мне не нужно, я хотел бы эти
  AS> полигоны просто закрашивать в свой цвет (для моей задачи итоговая
  AS> картинка вполне сойдёт).
  AS>     Пока есть только 2 идеи:
 
 [skip]
 
 Эти идеи - мой совет - лучше не применяй.
 Впрочем, вторая идея применяется несколько иначе - сначала на отдельном
 битмапе расставляются все точки границ, а потом достаточно быстро серией
 логических операций все закрашивают.
 Расставляются точки так: чертится отрезок с условиями: точка верхнего конца не
 ставится, точка нижнего конца ставится. Остальные точки по одной в строке.
 Точки ставятся по XOR - то есть если до установки отчка уже была, она
 стирается.
 _                <-- Один конец
      x
           x
                x <-- Еще один конец
 Дальше закрашивается так:
 для y=ymin..ymax для x=xmin..xmax A[x,y] = A[x-1,y] XOR C[x,y]
 A - битмап для прорисовки, C - дополнительный битмап.
 Так можно нарисовать любой многоугольник.
 
 Более просто делается так:
 есть вершины треугольника (x1,y1), (x2,y2), (x3,y3)
 1. Сортируем вершины в порядке возрастания y (y1<y2<y3)
 2. Рисуем в два приема
 для y=x1..x2 линию (x1+ (x2-x1)*(y-y1)/(y2-y1), y) - (x1+
 (x3-x1)*(y-y1)/(y3-y1), y)
 для y=x2..x3 линию (x2+ (x3-x2)*(y-y2)/(y3-y2), y) - (x1+
 (x3-x1)*(y-y1)/(y3-y1), y)
 и всё.
 
 вообще - подобным алгоритмом любые многоугольники можно закрашивать, только
 там понавороченнее.
 
  AS>     Есть и третья идея, но она нелепа, хотя и работает (нелепа т.к. там
  AS> куча частных проверок и сильно тормозит) - такой алгоритм я не видел пока
  AS> ни у кого, хотя он напоминает мой второй. Этот третий алгоритм я придумал
  AS> (правда не с нуля, но всё-же) 6 лет назад и тогда для меня это было круто
  AS> :)
 
 Этот лучше тоже не применяй. :)
 
 Send Email to vovanius2000<yxo>mail. ru
 
 --- ifmail v.2.15dev5
  * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
 
 

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

 Тема:    Автор:    Дата:  
 Быстрая закраска   Vovanius Uryvaeff   26 Nov 2002 21:57:49 
Архивное /ru.algorithms/330078ed8766.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional