Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11656
Последний выпуск: 19.06.2015

Компьютерная Графика


Разбиение невыпуклых многоугольников.

Пусть область невыпуклая :

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

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

Рассмотрим знаки :

  • 1. все знаки равны нулю - многоугольник вырождается в отрезок;
  • 2. есть и "+" и "-"  - многоугольник не выпуклый;
  • 3. все неотрицательные - многоугольник выпуклый и все нормали ориентированны    влево от контура;
  • 4. все неположительные - многоугольник выпуклый и все нормали ориентированны    вправо от контура.

Вычисление нормалей :

Одна вершина выбирается как базовая и все векторные произведения вычисляются относительно ее.

(vx1vy2 - vy1vx2)k - векторное произведение v1,v2.

 n*vE = (nx*i + nyj)(vEx*i + vEx*j) = nxvEx + nyvEy + 0;

nxvEx = -hyvEy             {ny = 1}

nx = -(vEy / vEx)*i + j

vi-1 и vi  - вершины

vi-1 * vi > 0, то n - внутренняя нормаль, иначе - внешняя.

 
  • 1. перенос начала координат в точку v1;
  • 2. начинаем вращать фигуру так, чтобы любое ребро лежало на оси X
  • 3. если Y вершины меньше нуля, то фигура невыпуклая и она отсекается соседями.

Раздел назад | тема назад | тема вперед | Раздел вперед

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог