powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как определить принадлежит ли точка прямоугольнику
25 сообщений из 108, страница 2 из 5
Как определить принадлежит ли точка прямоугольнику
    #35786489
pirovindos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. В одну хватит.
2. Ясно - не прямая, а отрезок границы. Под "прямой" обычно имеют в виду - бесконечную прямую, в отличие от отрезка.
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35786492
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А понятно буду иметь ввиду
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35786494
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pirovindos1. В одну хватит.
2. Ясно - не прямая, а отрезок границы. Под "прямой" обычно имеют в виду - бесконечную прямую, в отличие от отрезка.
Точно, ноль же тоже четное
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35786515
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pirovindos Осторожно: есть тонкости при попадании луча точно в вершину.
При попадании в вершину, придется использовать 4 луча
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35786535
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pirovindos1. "Посчитать вычет". Посчитать на какой угол повернется вектор направленный с началом в нужной точке и концом в вершине многоугольника, при обходе концом вектора ВСЕХ+1 вершин многоугольника по порядку от первой и до первой. Если на 0 градусов - то вне, если на 360, то внутри.

В этом случае не подойдет кажется
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35786539
pirovindos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могут все 4 в вершины попасть. Так что лучше аккуратно разобраться при попадании в вершину.

Или придется считать все направления на вершины и пускать луч мимо всех - но тогда половина работы по первому способу сделана :).
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35786541
pirovindos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежникpirovindos1. "Посчитать вычет". Посчитать на какой угол повернется вектор направленный с началом в нужной точке и концом в вершине многоугольника, при обходе концом вектора ВСЕХ+1 вершин многоугольника по порядку от первой и до первой. Если на 0 градусов - то вне, если на 360, то внутри.

В этом случае не подойдет кажется

Подойдет. Даже если улитку нарисуешь, тоже подойдет.
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35786542
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот именно при попадании всех четырех означает что внутри
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35786544
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КартежникВот именно при попадании всех четырех означает что внутри
Хотя нет ошибся
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35786558
nik_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так прямоугольник, или многоугольник?

Проверка принадлежности точки многоугольнику: http://algolist.manual.ru/maths/geom/belong/poly2d.php
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35787106
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
Dim rc as New Rectangle( 0 , 0 , 100 , 100 )
Dim p as new Point( 55 , 44 )
Console.WriteLine( rc.Contains(p) )
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35787107
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Worobjoff
Код: plaintext
Dim rc as New Rectangle( 0 , 0 , 100 , 100 )
а наклон как задавать?
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35787264
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упс.... показалось что на сайте VB.NET отвечаю...

miksoftWorobjoff
Код: plaintext
Dim rc as New Rectangle( 0 , 0 , 100 , 100 )
а наклон как задавать?Если это CS, то и для сложных фигур там есть функция определения принадлежности точки.
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35787847
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежникpirovindos1. "Посчитать вычет". Посчитать на какой угол повернется вектор направленный с началом в нужной точке и концом в вершине многоугольника, при обходе концом вектора ВСЕХ+1 вершин многоугольника по порядку от первой и до первой. Если на 0 градусов - то вне, если на 360, то внутри.

В этом случае не подойдет кажется
Еще был неплохой алгоритм (не помню названия), основанный на четности пересечений границ многоугольника горизонтальной прямой. Случаи перечечения вершин надо рассматривать отдельно.
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35788176
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот самый подходящий к моей задаче:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
int pnpoly(int npol, float * xp, float * yp, float x, float y)
 {
   int c =  0 ;
   for (int i =  0 , j = npol -  1 ; i < npol; j = i++) 
   {
     if ((((yp[i]<=y) && (y<yp[j])) || ((yp[j]<=y) && (y<yp[i]))) &&
       (x > (xp[j] - xp[i]) * (y - yp[i]) / (yp[j] - yp[i]) + xp[i]))
         c = !c;
   }
   return c;
 }
Пока что все работает отлично
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35788228
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правда как он это делает так и не врубился
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35788253
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я догадываюсь. Но что-бы быть уверенным, лучше уточнить что означают векторы float * xp, float * yp, float x, float y.
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35788278
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ догадываюсь. Но что-бы быть уверенным, лучше уточнить что означают векторы float * xp, float * yp, float x, float y.
xp - координаты x-ов(1.. npol)
yp - координаты y-ов(1.. npol)
(xp[1],yp[1]) - точка первого угла многоугольника и т.д.
(x,y) - заданная точка
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35788284
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КартежникmaytonЯ догадываюсь. Но что-бы быть уверенным, лучше уточнить что означают векторы float * xp, float * yp, float x, float y.
xp - координаты x-ов(1.. npol)
yp - координаты y-ов(1.. npol)
(xp[1],yp[1]) - точка первого угла многоугольника и т.д.
(x,y) - заданная точка
Ошибка
xp - координаты x-ов(0.. npol-1)
yp - координаты y-ов(0.. npol-1)
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35788748
pirovindos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картежникправда как он это делает так и не врубился
Перебирает все отрезки границы, которые пересекает прямая параллельная оси х, и вычисляет в какой полуплоскости (справа или слева от отрезка) находится интересующая точка. А потом берет четность всех случаев, когда "слева". Если нечетное, то внутри, если четное, то снаружи.
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35788760
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде пока работает, если что придется применять метод по цвету точки и многоугольника.
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35789033
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Этот метод годится только для выпуклых. Вогнутые надо будет разбивать на объединение нескольких выпуклых или делать сложные проверки с "исключением" впуклой области, если есть возможность. В качестве примера - проверка попадания точки в "бублик" аппроксимированный многоугольником.
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35789034
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДа. Этот метод годится только для выпуклых. Вогнутые надо будет разбивать на объединение нескольких выпуклых или делать сложные проверки с "исключением" впуклой области, если есть возможность. В качестве примера - проверка попадания точки в "бублик" аппроксимированный многоугольником.
Тогда с чего начинал, к тому и приду. По цвету определять.
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35789038
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это как "по цвету" ?
...
Рейтинг: 0 / 0
Как определить принадлежит ли точка прямоугольнику
    #35789042
Фотография Картежник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЭто как "по цвету" ?
Ну я думал закрашивать фигуры(тока еще не придумал как), и каждой присваивать свой цвет, они могут повторятся но не должны совпадать с фоном за фигурой. Найти максимально удаленные точки фигуры. Если заданная точка находится в этом получившемся прямоугольнике, то остается проверить ее цвет
...
Рейтинг: 0 / 0
25 сообщений из 108, страница 2 из 5
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как определить принадлежит ли точка прямоугольнику
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]