Цитата:
Сообщение от Juliet
Помогите пожалуйста с написанием программы на Паскале)
Разработка программы «Треугольник и точка»
Дана точка А(х, у). Определить, принадлежит ли она треугольнику с вершинами в точках (х1,у1), (х2, у2), (х3,у3). Сделать рисунок.
|
Извольте. Правда, сколь я припоминаю, у Вас АВС, и потому с графикой помочь не могу, ну а само решение - вот (обозначения приведены на рисунке):
Код:
Var
x1,x2,x3,y1,y2,y3,x,y,a,b,c,c1,c2,c3:Real;
Sum:Integer;
Function ArcCos(z:Real):Real;
begin
if Round(z*10000000)=10000000 then ArcCos:=0 else
if Round(z*10000000)=-10000000 then ArcCos:=Pi else
ArcCos:=(Pi/2)-ArcTan(z/SQRT(1-z*z));
end;
Function RadGr(t:Real):Real;
begin
RadGr:=(t/Pi)*180;
end;
Function Angle(d1,d2,d3:Real):Real;
begin
Angle:=ArcCos((Sqr(d1)+Sqr(d2)-Sqr(d3))/(d1*d2*2));
end;
Begin
Write('x1 = ');
Readln(x1);
Write('y1 = ');
Readln(y1);
Write('x2 = ');
Readln(x2);
Write('y2 = ');
Readln(y2);
Write('x3 = ');
Readln(x3);
Write('y3 = ');
Readln(y3);
a:=Sqrt(Sqr(x2-x3)+Sqr(y2-y3));
b:=Sqrt(Sqr(x1-x3)+Sqr(y1-y3));
c:=Sqrt(Sqr(x1-x2)+Sqr(y1-y2));
Writeln('Point:');
Write('x = ');
Readln(x);
Write('y = ');
Readln(y);
Writeln;
c1:=Sqrt(Sqr(x-x1)+Sqr(y-y1));
c2:=Sqrt(Sqr(x-x2)+Sqr(y-y2));
c3:=Sqrt(Sqr(x-x3)+Sqr(y-y3));
Sum:=Round(RadGr(Angle(c1,c2,c)+Angle(c2,c3,a)+Angle(c1,c3,b)));
Writeln(Sum=360);
Readln;
End.