GRY-Online.pl --> Archiwum Forum

Obliczanie pola trójkąta gdy dane są współrzędne wierzchołków (turbo pas...

19.05.2010
19:20
[1]

racel45 [ Generaďż˝ ]

Obliczanie pola trójkąta gdy dane są współrzędne wierzchołków (turbo pas...

Otóż mam zadanie domowe i muszę napisać program który to obliczy, ze wzoru podanego na kartce coś nie idzie (p:=1/2*|(x1*y2-x2*y1)+(x2*y3-x3*y2)+(x3+y1-x1*y3)|).

Znalazłem jeszcze w internecie inny (p:=1/2*|(x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)|).
We wzorze przed i po nawiasach są dodatkowo takie proste nawiasy |, ale nie wiem jak zrobić je w turbo pascalu, więc zapisałem to tak:

p:=(x2-x1)*(y3-y1)-(y2-y1)*(x3-x1);
p:=1/2*p;


No i dobrze liczy, tylko znak jest zły...
(to wyliczył -7,5)

Co jest nie tak ? Pewnie chodzi o te proste nawiasy, ale nie wiem jak je uzyskać w TP.

19.05.2010
19:31
[2]

Finthos [ Generaďż˝ ]

Korzystasz ze wzoru Herona, który oblicza pole trójkąta z długości jego boków. Te pionowe nawiasy to wartość bezwzględna. Albo znajdź odpowiednią funkcję pascala( abs?) albo na końcu użyj ifa:

if p<0 then p:=-p.

19.05.2010
19:35
[3]

racel45 [ Generaďż˝ ]

No tak, abs pomógł, dzięki :)

Czyli ten pierwszy wzór jest zły ? To mam źle wydrukowane wtedy :P Ale drugi działa.

19.05.2010
22:52
[4]

DEXiu [ Senator ]

Gdybyś się chwilę zastanowił to wiedziałbyś co jest nie tak z pierwszym wzorem. W trzecim nawiasie zamiast x3+y1 powinno być x3*y1 i wtedy oba te wzory będą dokładnie tożsame. Nawet przepisując wzór z kartki czasem dobrze jest pomyśleć.
Finthos ==> To nie wzór Herona, tylko wzór na pole trójkąta z wyznacznika wektorów rozpinających go ;) Ale to tylko szczegół w ramach ciekawostki - nie żebym się złośliwie czepiał.

© 2000-2025 GRY-OnLine S.A.