LeszekJ [ Chor��y ]
potrzebna pomoc w zadaniu z matmy/infy
Witam,
Słuchajcie, mam takie zadanie: Dane są liczby rzeczywiste x1,y1,x2,y2,x3,y3,x4,y4 - współrzędne czterech punktów na płaszczyźnie: A(x1,y1), B(x2,y2), C(x3,y3), D(x4,y4). Sprawdzić czy jeden z punktów leży wewnątrz trójkąta o wierzchołkach w pozostałych trzech punktach.
Program mam napisać w Pascalu, ale nie proszę Was o podanie kodu. Chodzi mi bardziej o metodę którą powinienem się posłużyć, jakaś wskazówka. Może istnieje jakaś zależność o której nie wiem?
Z góry dzięki za pomoc
LeszekJ [ Chor��y ]
^mały up^

darek_dragon [ 42 ]
Hmm... Na myśl przychodzi mi tylko taka metoda:
Powierzchnia trójkąta to przecięcie trzech półpłaszczyzn ograniczonych prostymi. Musisz znaleźć równania (parametry a i b) wszystkich trzech prostych, a następnie dla każdej sprawdzić, czy szukany punkt leży po stronie punktu nie należącego do tej prostej.
Czyli zakładając, że szukany jest punkt D(x4,y4):
1. Bierzesz parę punktów leżących na prostej określającej jeden bok trójkąta A(x1,y1) i B(x2,y2) oraz punkt wolny (przeciwległy wierzchołek) - C(x3,y3).
2a. Jeśli x1!=x2 wyznaczasz parametry a i b równania prostej przechodzącej przez punkty A i B (metodą wyznacznikową z układu równań liniowych ax1+b=y1 ^ ax2+b=y2).
2b. Jeśli punkt C(x3,y3) leży na lub pod prostą (y3 <= ax3+b) sprawdzasz czy punkt D(x4,y4) też leży na lub pod prostą (y4 <= ax4+b) i odwrotnie (jeśli C jest nad prostą, D też musi być nad).
LUB
3. Jeśli x1=x2 (prosta jest pionowa) sprawdzasz czy D leży odpowiednio na prostej albo po prawej lub lewej stronie (w zależności od C).
4. Powtarzasz dla wszystkich trzech par punktów trójkąta (A i B, B i C, C i A) wraz z ich przeciwległymi wierzchołkami oczywiście. Jeśli w każdym przypadku otrzymałeś wartości prawdziwe w kroku 2 lub 3, punkt leży wewnątrz trójkąta.
LeszekJ [ Chor��y ]
Dzięki!
O to mi właśnei chodziło. myślałem nad znalezieniem tych trzech prostych, ale nie wpadłem na pomysł sprawdzenia czy punkt szukany leży po tej samej stronie co punkt wolny. Teraz napisanie programu to pestka :)