Дана точка А (х,у). Определить, принадлежит ли она прямоугольнику с вершинами в точках (х1,у1), (х2,у2), (х3,у3), (х4,у4)
На Паскале
Answers & Comments
srzontmp// PascalABC.NET 3.3, сборка 1627 от 27.01.2018 // Внимание! Если программа не работает, обновите версию!
begin var n:=4; 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 i<n do begin if ((yp[i]<=y) and (y<yp[j]) or (yp[j]<=y) and (y<yp [i])) and (x<(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.
Примеры Введите парами координаты четырех вершин 1 4 6 9 9 6 4 1 Введите координаты точки: 1.5 1.6 Не внутри
Введите парами координаты четырех вершин 1 4 6 9 9 6 4 1 Введите координаты точки: 4 7 Внутри
srzontmp
abs - это функция, вычисляющая модуль (абсолютное значение) числа, abs(- 5) = 5, sp - это имя функции, вычисляющей площадь треугольника по координатам трех вершин треугольника, переменная st - для хранения суммы площадей 4 треугольников, если точка (x,y) внутри прямоугольника, переменная sp - для хранения площади прямоугольника. Если точка внутри прямоугольника, то сумма площадей 4 треугольников равна площади прямоугольника.
Answers & Comments
// Внимание! Если программа не работает, обновите версию!
begin
var n:=4;
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 i<n do begin
if ((yp[i]<=y) and (y<yp[j]) or (yp[j]<=y) and (y<yp [i]))
and (x<(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.
Примеры
Введите парами координаты четырех вершин
1 4 6 9 9 6 4 1
Введите координаты точки: 1.5 1.6
Не внутри
Введите парами координаты четырех вершин
1 4 6 9 9 6 4 1
Введите координаты точки: 4 7
Внутри