Динамическая графика 1994 г.

Анимаци в векторной графике - Полезные приемы.


3.7 Полезные приемы

Предложенный здесь метод настолько прост, что требовать от него большого совершенства не приходится. Так, например, он не может четко работать с полыми объектами, он "не любит", когда встречаются грани, представляющие иэ себя невыпуклый многоугольник и т.п. Зато он работает настолько быстро, что небольшие погрешности могут быть и не очень критичными, а в динамичной игре и не очень заметными. Тем не менее, на несколько несложных, но важных моментов мы здесь все-таки укажем.

Принцип декомпозиции.

Рис. 45 Декомпозиция на треугольники

Этот принцип состоит в тон, что грани трехмерного тела упрощаются до треугольников и вместо описания сложной грани мы вводим несколько описаний треугольников (см. рис.45).

Треугольники - достаточно удобные фигуры уже хотя бы тем, что они всегда вы пуклы- Рутинную работу по декомпозиции граней своего объекта можно произвести

вручную, при подготовке данных для программы, а можно ее и не производить, а поручить компьютеру, ограничившись описанием граней в виде многоугольников. Правда, при таком подходе компьютер может оказаться иногда в тупиковой ситуации, например, на рис. 46 показано, как он может "выдумать" несуществующий треугольник. Методика борьбы с этим явлением состоит в том, что надо взять себе за правило проводить разбиение всегда иэ одной и той же вершины, например иэ той, которая значится в списке первой, а первой ставить ту вершину, которая Вам удобна. Для слу чая, представленного на рис.47 такое описание будет иметь вид: 6,1,2,3,4,5.

Рис. 47 Правильная декомпозиция

Для варианта, представленного на рис.48. Вам ни вручную, ни автоматически не удастся найти приемлемого способа декомпозиции иэ одной вершины. Здесь нужен специальный алгоритм. И он существует. Суть его следующая:

- берутся две соседние вершины многоугольника, например 1 и 8 (рис.48) .

Рис. 46 Неправильная декомпозиция

берутся их соседние вершины. Для т.8 - это вершина 7, а для т.1 - это вершина 2.

проводятся возможные диагонали. Для т.8 - это 8-2, а для т. 1 это 1-7.

иэ этих двух диагоналей выбирается кратчайшая. "Побеждает" диагональ 1-7, проведенная иэ вершина 1, а вершина 8 иэ дальнейшего рассмотрения выпадает.

вместо выпавшей вершины "встает" ее соседка (вершина 7) и алгоритм повторяется для другой пары вершин 1 и 7.

так далее, пока все вершины не будут исчерпаны.

Шаг

Рассматриваемые

Рассматриваемые

Кратчайшая

Выпадающая

вершины

диагонали

диагональ

вершина

1

8,1

1-7, 8-2

1-7

8

2

7,1

7-2, 1-6

7-2

1

3

7,2

7-3, 2-6

2-6

7

4

6,2

6-3, 2-5

6-3

2

5

6,3

6-4, 3-5

6-4

3

<4

3

~ ~ - - , _ _

/

5

6

N

8

7

1

ч 1

_ _ -

1

2

Рис. 48 Алгоритм декомпозиции сложной фигуры

Как видите, этот путь позволяет проводить автоматическую декомпозицию сложных фигур на треугольники. Если в программе очень много плоских фигур (граней тел) и они непрерывно меняют

свою форму, то вручную делать декомпозицию на треугольники не %

всегда возможно и пользуются таким или подобным алгоритмом.

Принцип фиктивных ребер. Это еще один полезный прием, который часто применяют в векторной графике

С полыми телами при описанной выше технологии лучше дел не иметь, но иногда все-таки это может быть необходимым. Как же поступать, если такая задача стоит и обойти ее не удается, см. например объект на рис. 49.

8

6

Рис. 49 Описание полого объекта.

Сложная грань имеет внутренний вырез. В этом случае вводится понятие фиктивных ребер Они соединяют точку внешнего контура с точкой внутреннего, как и настоящие ребра, они включаются в описание грани, но при работе программы на экране не изображаются Чтобы в описании грани сразу было видно, какое ребро является фиктивным, а какое - нет, то при задании фиктивных ребер ставится знак "минус" перед вершиной Тогда, например, верхняя грань тела, показанного на рис.49, будет описываться следующим образом.

1,2,3,4,5,6,7,-12,13,14,15,12,-7,8,9,10,11

Программа должна сама разобраться, что если стоит "минус".

то сторону рисовать не надо, а надо просто перейти к новой координате .

С помощью такого приема можно изображать не только внутренние полости, но и просто отрезки прямых, например декоратив ные. Обратите также внимание на особенность порядка обхода точек во внутреннем отверстии: 12,13,14,15. Как Вы видите, они обходятся по часовой стрелке, хоть и лежат на видимой поверхности. Дело в том, что наше правило обхода "против часов", которое мы ввели выше, было неполным. Движение должно осуществляться такин образом, чтобы при движении от предыдущей лючки к последующей, "тело" фигуры оставалось бы слева. Для внешних контуров это и дает обход против часовой стрелки, но для внутренних (хоть и видимых) движение оказывается "по часам"

Использование фиктивных ребер может значительно расширить Ваши возможности по изображению трехмерных тел.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Toys - Наш анонс: Пыль звёздных дорог.
Национальный фонд спектрума - Именно так будет официально называться фонд создаваемый Андреем Савичевым и еже с ним.
Развлечения - ответы на головоломки.
Обзор - обзор свежих релизов: Lord of Chaos, F-19 Stealth Fighter, Carrier Command, The Simpsons, Gauntlet 3, The Addams Family, Wild West Seymour, Sly Spy, Paris To Dakar, Duck Out, Johangir Khan World Championchip Squash, The Amazing Adventures of Robin Hood.
Scene - diffident newcomers: на сцене сложилась непонятная ситуация "старые не могут, молодые не хотят".

В этот день...   9 апреля