Найти принадлежность точки данному выпуклому многоугольнику. На паскаль abs, питон либо
Найти принадлежность точки заданному выпуклому многоугольнику. На паскаль абс, питон или с++
Задать свой вопрос
Юлия Нештайго
Могу на современном PascalABC.NET написать, на Pascal ABC лениво, это теснее не язык, а пережиток прошедшего.
Яна Метяина
давайте
1 ответ
Борис Ахибаев
PascalABC.NET 3.4.0, сборка 1671 от 31.05.2018
Внимание! Если программка не работает, обновите версию!
begin
var n:=ReadInteger('Число сторон многоугольника:');
var xp:=new real[n];
var yp:=new real[n];
Writeln('Введите парами координаты вершин');
for var i:=0 to n-1 do Read(xp[i],yp[i]);
var (x,y):=ReadReal2('Введите координаты точки:');
var (i,j,c):=(0,n-1,False);
while ilt;n do begin
if ((yp[i]lt;=y) and (ylt;yp[j]) or (yp[j]lt;=y) and (ylt;yp [i]))
and (xlt;(xp[j]-xp[i])*(y-yp[i])/(yp[j]-yp[i])+xp[i]) then c:=not c;
j:=i;
i+=1;
end;
if c then Writeln('Внутри')
else Writeln('Не снутри')
end.
Образцы
Число сторон многоугольника: 5
Введите парами координаты вершин
-5 2 2 6 7 3.1 4.3 -5 -6 -6
Введите координаты точки: 2.1 1.7
Внутри
Число сторон многоугольника: 5
Введите парами координаты вершин
-5 2 2 6 7 3.1 4.3 -5 -6 -6
Введите координаты точки: -2 5
Не внутри
Внимание! Если программка не работает, обновите версию!
begin
var n:=ReadInteger('Число сторон многоугольника:');
var xp:=new real[n];
var yp:=new real[n];
Writeln('Введите парами координаты вершин');
for var i:=0 to n-1 do Read(xp[i],yp[i]);
var (x,y):=ReadReal2('Введите координаты точки:');
var (i,j,c):=(0,n-1,False);
while ilt;n do begin
if ((yp[i]lt;=y) and (ylt;yp[j]) or (yp[j]lt;=y) and (ylt;yp [i]))
and (xlt;(xp[j]-xp[i])*(y-yp[i])/(yp[j]-yp[i])+xp[i]) then c:=not c;
j:=i;
i+=1;
end;
if c then Writeln('Внутри')
else Writeln('Не снутри')
end.
Образцы
Число сторон многоугольника: 5
Введите парами координаты вершин
-5 2 2 6 7 3.1 4.3 -5 -6 -6
Введите координаты точки: 2.1 1.7
Внутри
Число сторон многоугольника: 5
Введите парами координаты вершин
-5 2 2 6 7 3.1 4.3 -5 -6 -6
Введите координаты точки: -2 5
Не внутри
Эвелина Нелюби
*Текста, извините. Там первым или заключительным эмблемой в строке что-то приходило непечатаемое. Пробуйте нащупать его курсовом и удалить. Иной вариант - воткните текст в Блокнот, а оттуда уже в программку.
Сакалис
Ирина
Я на данный момент только этот текст отсюда скопировал в браузере Мозилла FireFox - все великолепно работает.
Жека Бургаз
Все эти задачи - итог последних конфигураций, внесенных местными сайтописателями, после которого в копию стал добавляться хвостик со ссылкой на Знания. Что-то еще попутно оно заносит, многие жалуются.
Игорь
спасибо за то, что не отправили) переписала текст с 0 и все работает) можно вопросик? что означает сие формула (x<(xp[j]-xp[i])*(y-yp[i])/(yp[j]-yp[i])+xp[i]?
Milana Spiridoshkina
Почему я обязан Вас "высылать"? То, что Вы спросили - это формула из метода "Трассировка луча", с подмогою которого решается данная задачка для произвольного многоугольника (и даже не непременно выпуклого.
Маргарита Кухельная
В Интернете на поисковике посмотрите фразу "Проверка принадлежности точки многоугольнику. Способ трассировки лучом"
Регина Раввей
Там будут методы, картинки и объяснения.
Олег Апостолов
а какой из способов описан?Учёт числа пересечений либо Учёт числа оборотов
Василиса Долгая
Чет/нечет пересечений. Вы же видите: c:=not c; - инверсия при очередном пересечении.
Межеумова
Виктория
А вот счетчика оборотов нет. И в конце if c then Writeln('Снутри')else Writeln('Не внутри')
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
10) Килограмм конфет дороже килограмма печенья на 52 р. За 8
Математика.
Во сколько раз число атомов кислорода в земной коре больше числа
Химия.
Облако тегов