Приветствую Вас Гость | RSS

Delphi заготовки

Понедельник, 13.05.2024, 04:25
Главная » Файлы » Мои файлы

Лежит ли точка внутри четырехугольника
16.03.2012, 12:09

Function Dlina(a,b:Tpoint):real; // находим расстояние между двумя точками
var x1,y1,x2,y2:real;
begin
x1:=a.x;
y1:=a.y;
x2:=b.x;
y2:=b.y;
   result:=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))
end;

Function GetP(a,b,c:Tpoint):real; // периметр треугольника
var p,r1,r2,r3:real;
begin
 r1:=Dlina(a,b);
 r2:=Dlina(b,c);
 r3:=Dlina(c,a);
 p:=(r1+r2+r3);
 result:=p;
end;
Function GetS(a,b,c:Tpoint):real; // площадь треугольниа
var p,r1,r2,r3:real;
begin
 r1:=Dlina(a,b);
 r2:=Dlina(b,c);
 r3:=Dlina(c,a);
 p:=(r1+r2+r3)/2;
 result:=sqrt(p*(p-r1)*(p-r2)*(p-r3));
end;

Function GetS2(a,b,c,d:Tpoint):real; // функция площади любого четырехугольника стороны которого A,B,C,D диаганали AC BD
var p,r1,r2,r3,r4:real;
alpha:real;
begin
 r1:=Dlina(a,c);
 r2:=Dlina(B,d);
 alpha:=arccos((a.x-c.x)/r1)-arccos((b.x-d.x)/r2); // находим угол Alpha
 result:=r1*r2/2*sin(alpha);
end;

Function GetTochka(a,b,c,d:Tpoint;X:Tpoint):boolean; // проверка лежит ли точка внутри 4-х угольника
begin
   result:=abs(GetS2(a,b,c,d)-(GetS(x,a,b)+GetS(x,b,c)+GetS(x,c,d)+GetS(x,d,a)))<0.0001;
end;
исходник на Delphi Pascal ниже
Категория: Мои файлы | Добавил: NetSoftWare
Просмотров: 2662 | Загрузок: 0 | Комментарии: 3 | Рейтинг: 4.0/1
Всего комментариев: 1
1 NetSoftWare  
0

Имя *:
Email *:
Код *: