Есть координаты вершин треугольника. Определить, где находится начало координат (внутри треугольника, снаружи или находится на одной из его сторон) Для Паскаля ABC, подскажите самый простой способ кода..
Answers & Comments
clinteastwood2type TXY = record x, y: Real end; function sqt(a, b, c: TXY): Real; begin sqt:=abs((a.x-b.x)*(c.y-b.y)-(a.y-b.y)*(c.x-b.x))/2; end; const eps=1e-4; o: TXY = (x:0; y:0); var a, b, c: TXY; s1, s2, s3: Real; begin Write('Введите координаты вершин треугольника: '); ReadLn(a.x,a.y,b.x,b.y,c.x,c.y); s1:=sqt(o,a,b); s2:=sqt(o,b,c); s3:=sqt(o,a,c); Write('Центр координат лежит '); if abs(s1)<eps then WriteLn('на стороне AB') else if abs(s2)<eps then WriteLn('на стороне BC') else if abs(s3)<eps then WriteLn('на стороне AC') else if abs(s1+s2+s3-sqt(a,b,c))<eps then WriteLn('внутри треугольника') else WriteLn('вне треугольника'); end.
Answers & Comments
function sqt(a, b, c: TXY): Real;
begin
sqt:=abs((a.x-b.x)*(c.y-b.y)-(a.y-b.y)*(c.x-b.x))/2;
end;
const
eps=1e-4;
o: TXY = (x:0; y:0);
var a, b, c: TXY;
s1, s2, s3: Real;
begin
Write('Введите координаты вершин треугольника: ');
ReadLn(a.x,a.y,b.x,b.y,c.x,c.y);
s1:=sqt(o,a,b); s2:=sqt(o,b,c); s3:=sqt(o,a,c);
Write('Центр координат лежит ');
if abs(s1)<eps then WriteLn('на стороне AB')
else if abs(s2)<eps then WriteLn('на стороне BC')
else if abs(s3)<eps then WriteLn('на стороне AC')
else if abs(s1+s2+s3-sqt(a,b,c))<eps then WriteLn('внутри треугольника') else WriteLn('вне треугольника');
end.