Компьютерная геометрия и графика. Лекция 2. План занятия: Проверка многоугольника на выпуклость. Нахождение площади произвольного многоугольника. Принадлежность.

Презентация:



Advertisements
Похожие презентации
Компьютерная геометрия и графика. Лекция 3. План занятия: Задача о пересечении двух выпуклых многоугольников. Задача о пересечении двух произвольных многоугольников.
Advertisements

Геометрический смысл производной Если y = f(x) непрерывна на I, то существует f(x 0 ), где x 0 є I В точке x 0 существует касательная y = kx + b, k = f.
Публичная лекция. Метод координат и метод векторов при решении задач Подготовила учитель математики Краснова Е.В.
Координатный метод Геометрия Подготовила Глазкрицкая Светлана Геннадьевна.
Решение нелинейных уравнений с применением средств программирования. Созданная программа предусматривает 5 методов решения нелинейных уравнений. Ход работы.
ЛЕКЦИЯ 4 по дисциплине «Математика» на тему: «Определенный интеграл» для курсантов I курса по военной специальности «Фармация»
Задания В6 Общее о задачах: В данных задачах требуется найти площади фигуры или какую-либо ее часть. Некоторые из этих задач основаны также на знании.
ПРЯМАЯ НА ПЛОСКОСТИ. Уравнение линии на плоскости. Определение. Уравнением линии называется соотношение y = f(x) между координатами точек, составляющих.
Урок1 Прямая на плоскости.. Виды уравнений прямой на плоскости. Прямая на плоскости может быть задана одним из следующих ниже уравнений. 1. Прямая на.
МНОГОУГОЛЬНИКИ Г-8 урок 1. Цель: Ввести понятие многоугольника, выпуклого многоугольника и рассмотреть четырехугольник как частный вид многоугольника.
Движение Геометрия 8 класс по учебнику А.В. Погорелова.
ГОУ ЦО 133 учитель Е.В. Шаркова ПРОЕКЦИИ ПЕРЕМЕЩЕНИЯ НА ОСИ КООРДИНАТ. МОДУЛЬ ПЕРЕМЕЩЕНИЯ Использованы рисунки из презентации В.Е. Фрадкина «Векторные.
Стехов Игорь 10 класс. Отметить на линии синусов число а. Отметить все синусы, которые больше(меньше) числа а. Выделить на единичной тригонометрической.
Зачет по геометрии в 9 классе Сыропятова В.Г. Кишертская средняя школа.
ГЕОМЕТРИЧЕСКИЕ ПОСТРОЕНИЯ. 1. ДЕЛЕНИЕ ОТРЕЗКА ПРЯМОЙ НА РАВНЫЕ ЧАСТИ.
План: 1.Понятие первообразной функции. Неопределенный интеграл. 2.Методы интегрирования (по формулам, заменой переменной, по частям). 3.Понятие определенного.
КРАТНЫЕ ИНТЕГРАЛЫ Как известно, интегрирование является процессом суммирования. Однако суммирование может производится неоднократно, что приводит нас к.
МНОГОУГОЛЬНИКИ. Многоугольники Многоугольник Определение: Ломаная называется замкнутой, если ее концы совпадают. А1А1 А2А2 А3А3 А4А4 А5А5 Определение:
Учебное пособие по дисциплине «Элементы высшей математики» Преподаватель: Французова Г.Н.
Многоугольники. Выпуклые многоугольники. Определение. Элементы многоугольника. Свойства.
Транксрипт:

Компьютерная геометрия и графика. Лекция 2

План занятия: Проверка многоугольника на выпуклость. Нахождение площади произвольного многоугольника. Принадлежность точки выпуклому многоугольнику. Принадлежность точки произвольному многоугольнику.

Проверка многоугольника на выпуклость.

N 2 N Дано: многоугольник P, он задан двумерным массивом координат вершин. Нулевая и n-ая координаты будут совпадать P[0]=P[N]

Методы решения этой задачи: 1. Для любой стороны многоугольника проверяем условие, что все вершины находятся с одной стороны от прямой проходящей через эту сторону, проверяя, например, знак точек при подстановке их в уравнение прямой для этой стороны. 2. Для каждой вершины проверяем, что поворот происходит все время в одном направлении. Для этого находим знак векторного произведения сторон, исходящих из рассматриваемой вершины - если для всех вершин он одинаковый, то многоугольник выпуклый.

Воспользуемся вторым методом.

i-1i+1iba a X a Y a X a Y a x b = b X b Y b X b Y В переменную Z будем помещать знак векторного произведения двух векторов а и b Формула для вычисления произведения выглядит так:

Единственный сложный случай: считается векторное произведение первой и последней стороны многоугольника. Будем считать его отдельно, а все остальные векторные произведения - в цикле. N-1 1Nba

Алгоритм: z=(P[N,1]-P[N-1,1])*(P[1,2]-P[N,2])- -(P[N,2]-P[N-1,2])*(P[1,1]-P[N,1]); for (i=1;i<=N;i++) {zi=(P[i,1]-P[i-1,1]*(P[i,2]-P[i+1,2])- -(P[i,2]-P[i-1,2])*(P[i,1]-P[i+1,1]); if (zi*z<0) {НЕВЫПУКЛЫЙ; break} } if (zi*z>0) {ВЫПУКЛЫЙ;}

Вычисление площади произвольного многоугольника.

Площадь фигуры, которую мы ищем, обозначим S. В начале работы алгоритма S=0 Переходя каждый раз от вершины N к N+1 мы находим площадь криволинейной трапеции, сверху ограниченной отрезком (N, N+1), снизу осью Ох, а слева и справа перпендикулярами опущенными из N и N+1 на ось Ох

Рассматриваем отрезок 1-2 За S1 обозначим площадь криволинейной трапеции, которая выделена красным цветом на рисунке

Рассматриваем отрезок 2-3 Аналогично вычисляем площадь S2, но ее мы вычитаем из площади

Результат выполнения двух шагов алгоритма показан на рисунке: найдена площадь выделенного участка

Если вектор выходящий из вершины N к вершине N+1 образует с осью Ох острый угол (то есть векторное произведение положительно), то S=S+SN Если этот вектор образует с Ох тупой угол (то есть векторное произведение отрицательно), то S=S-SN. Сделав N шагов мы получаем площадь данного многоугольника S.

Принадлежность точки выпуклому многоугольнику.

Дано: выпуклый многоугольник, координаты некоторой точки. Существует несколько способов определения принадлежности точки многоугольнику. Рассмотрим два из них.

Первый способ: Соединяем все вершины многоугольника с данной точкой и ищем сумму площадей всех получившихся треугольников. Отдельно считаем площадь самого многоугольника. Если получившиеся площади совпадают, то точка внутри, иначе снаружи.

Второй способ: Двигаемся по всем вершинам многоугольника. Если данная точка С по отношению к текущей точке многоугольника все время слева (или все время справа), то точка внутренняя, иначе внешняя. А СВ То есть опять считаем векторное произведение двух векторов АВ х АС. Если знаки разные, то точка снаружи, иначе внутри.

Принадлежность точки произвольному многоугольнику.

Дано: произвольный многоугольник, координаты некоторой точки.

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

Первое исключение: луч может пройти через вершину многоугольника: В таком случае надо проверить дополнительное условие - если соседние вершины В и С этого многоугольника находятся с разных сторон от луча, то считаем А точкой пересечения. (рис 2) - если с одной стороны, то не считаем. (рис 1) В С А В С А рисунок 1 рисунок 2

Второе исключение: луч совпадает с одной из сторон: - в случае показанном на (рис 1) считается, что луч имеет только одно пересечение с многоугольником (точка D) - в случае показанном на (рис 2) весь отрезок MN считается одним пересечением (как будто одна вершина) и применяем предыдущее исключение. В С А В С А рисунок 1 рисунок 2 D N M

Например, на этом рисунке многоугольник имеет 4 пересечения с лучом А: A

Еще один недостаток этого алгоритма: Алгоритм некорректно работает с границами. Следует отдельно проверять принадлежность точки границе многоугольника. В этом случае векторное произведение равно нулю.

КОНЕЦ