Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2007, 15:07   #1
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
Вопрос Точка на полигоне?

Помогите, пожа-а-алуйста
У меня массив точек полигона(многоугольника).
Требуеться:
Определить, находиться ли точка в пределах
полигона.
Роман Радер вне форума Ответить с цитированием
Старый 06.02.2007, 18:41   #2
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

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

нечетное -> точка внутри.
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 07.02.2007, 13:05   #3
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
Восклицание Реализация

Спасибо за совет!
Но возник вопрос: как это реализовать?
Это нужно проверить каждый отрезок на пересечение с
проведеной прямой, я правильно понимаю?
Роман Радер вне форума Ответить с цитированием
Старый 07.02.2007, 13:16   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Да, для каждой стороны многоугольника нужно проверить наличие в ней точки с ординатой, равной ординате заданной контрольной точки.
Реализуется простым сравнением ординат двух соседних вершин Ym, Ym+1 многоугольника с ординатой Yk контрольной точки. Если Yk находится между Ym и Ym+1, то пересечение есть.

Последний раз редактировалось mihali4; 07.02.2007 в 13:26.
mihali4 вне форума Ответить с цитированием
Старый 07.02.2007, 14:10   #5
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
Хорошо Спасибо всем!

Большое спасибо всем за советы!!!
Роман Радер вне форума Ответить с цитированием
Старый 11.02.2007, 14:36   #6
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
Сообщение

Я пытался написать, не получилось вот почему:
если проверять прямую - будет чётное всегда:
с обоих сторон от точки будет нечётное,
а как проверять луч - не знаю...
Если у кого-то есть исходник...
Роман Радер вне форума Ответить с цитированием
Старый 11.02.2007, 14:55   #7
Time
Пользователь
 
Регистрация: 09.02.2007
Сообщений: 32
По умолчанию

Цитата:
Помогите, пожа-а-алуйста
У меня массив точек полигона(многоугольника).
Требуеться:
Определить, находиться ли точка в пределах
полигона.
Т.е. у тебя многоугольник задан массивом всех его вершин (вершины заданы в виде координат на плоскости)? Так что ли?
Time have not meaning, mind - this is main...
Time вне форума Ответить с цитированием
Старый 11.02.2007, 16:42   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Я пытался написать, не получилось вот почему: если проверять прямую - будет чётное всегда
Луч - это не есть прямая через точку!
Луч - это прямая ИЗ точки. В некоторых случаях в одну из сторон не будет ни одного пересечения - это если точка находится справа или слева от многоугольника.
mihali4 вне форума Ответить с цитированием
Старый 11.02.2007, 18:54   #9
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Луч - это не есть прямая через точку!
Луч - это прямая ИЗ точки. В некоторых случаях в одну из сторон не будет ни одного пересечения - это если точка находится справа или слева от многоугольника.
Да, я знаю, неправильно выразился... Но всё равно не выходит!

Цитата:
Сообщение от Time Посмотреть сообщение
Т.е. у тебя многоугольник задан массивом всех его вершин (вершины заданы в виде координат на плоскости)? Так что ли?
Да, так...

Последний раз редактировалось zetrix; 11.02.2007 в 19:42.
Роман Радер вне форума Ответить с цитированием
Старый 11.02.2007, 19:37   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Но всё равно не выходит!
Ерунда!
Возьми лист бумаги и порисуй. Метода абсолютно верна.
Если и вправо, и влево дает отсутствие пересечений, проверяем вертикальные лучи.
Кстати, ноль - четное число, между прочим...
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не найдена точка входа. Черничный Общие вопросы Delphi 17 23.07.2008 11:54
Определить попала ли точка в область? Iogan Gamba Puti Общие вопросы Delphi 7 13.05.2008 00:15
Принадлежит ли точка (x,y) круговому кольцу... Sota Паскаль, Turbo Pascal, PascalABC.NET 2 24.03.2008 17:03
Дана точка A с координ. X и Y, определить... Cullen Паскаль, Turbo Pascal, PascalABC.NET 5 30.01.2008 00:22
Пренадлежит-ли точка функции? Conso Помощь студентам 4 29.01.2008 15:28