GRY-Online.pl --> Archiwum Forum

potrzebna pomoc w zadaniu z matmy/infy

05.11.2007
19:54
[1]

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

05.11.2007
23:27
[2]

LeszekJ [ Chor��y ]

^mały up^

06.11.2007
00:31
smile
[3]

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.

06.11.2007
01:09
[4]

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 :)

© 2000-2025 GRY-OnLine S.A.