Skocz do zawartości

Dziwaczne zadanie z programowania


Flaque

Rekomendowane odpowiedzi

Nauczyciel podyktował nam zadanie, za które nie mam pojęcia jak się zabrać.

Określ położenie punktu o współrzędnych Z(x,y) względem trójkąta wyznaczonego przez wierzchołki ABC o współrzędnych A(x1,y1), B(x2,y2), C(x3,y3) obliczając pola trójkątów S1:ABZ, S2:ACZ, S3:BCZ, S4:ABC według zasady:

"jeżeli |S1+S2+S3+S4| < LUB = 0(do potegi 00001) to punkt Z leży wewnątrz trójkąta

Mógłby mi ktoś to może rozrysować, chociażby graficznie? A za napisanie w pascalu z komentarzami byłbym niesamowicie wdzięczny:)

Odnośnik do komentarza
Udostępnij na innych stronach

Pole liczyć najłatwiej będzie ze wzoru Herona:

http://upload.wikimedia.org/math/d/2/a/d2a...b8ac8ff08a0.png

p to połowa obwodu, a,b i c to boki.

 

Tylko nie bardzo rozumiem ten warunek:

"jeżeli |S1+S2+S3+S4| < LUB = 0(do potegi 00001)"

 

Wydaje mi się, że S1+S2+S3 powinno być równe S4

 

EDIT:

Ewentualnie był też jakiś wzór z iloczynem wektorów sąsiednich boków.

Odnośnik do komentarza
Udostępnij na innych stronach

Te, a pola przy zestawie punktów X,Y nie robiło się na macierzy przypadkiem?

 

EDIT

GML
// S( x1, y1, x2, y2, x3, y3 )

a = point_distance( x1, y1, x2, y2 );

b = point_distance( x2, y2, x3, y3 );

c = point_distance( x3, y3, x1, y1 );

 

p = ( a + b + c ) / 2;

 

return sqrt( p * ( p - a ) * ( p - b ) * ( p - c ) );

GML
S1 = S( Ax, Ay, Bx, By, Zx, Zy );

S2 = S( Ax, Ay, Cx, Cy, Zx, Zy );

S3 = S( Bx, By, Cx, Cy, Zx, Zy );

S4 = S( Ax, Ay, Bx, By, Cx, Cy );

 

if( S1 + S2 + S3 > S4 ) {

show_message( 'Out' );

}

else {

show_message( 'In' );

}

 

EDIT

Kurde, miał być Pascal. Oh well...

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...