Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

2D Trójkąt prostokątny - algorytm

Ostatnio zmodyfikowano 2012-04-18 23:26
Autor Wiadomość
Arghiliis
Temat założony przez niniejszego użytkownika
2D Trójkąt prostokątny - algorytm
» 2012-04-18 12:10:59
Witam, mam problem z pewnym algorytmem wyliczającym wierzchołek trójkąta prostokątnego.
Zacznę może od początku..
Program ma za zadanie narysować trójkąt podając za dane jedynie współrzędne dwóch punktów oraz kąta alfa.
Podane wspołrzędne bedą tworzyć przeciwprostokątną owego trójkąta.
Rys. http://www.picshot.pl/pfiles/95802/pg.png

Trudziłem się wektorami z geometrii analitycznej, twierdzeniami sinusow/cosinusów a nawet metodami numerycznymi.

Liczę na waszą pomoc.
Z góry dziękuję.
P-54763
ison
» 2012-04-18 13:53:59
http://i44.tinypic.com/29ctg89.png

Pierwsze co to należy zauważyć, że to zadanie ma zawsze 2 rozwiązania ;) (albo 0 oczywiście).
Punkt C może być albo po lewej stronie AB albo po prawej.

Zacznijmy od wyliczenia |AC| -> z trygonometrii wiesz, że cos(alpha) = |AC|/|AB|
Zauważ, że teraz punkt C będzie leżał w miejscu (A.x+cos(alpha+beta)*|AC|,A.y+sin(alpha+beta)*|AC|), zostało więc nam tylko wyliczyć kąt beta z dolnego żółtego trójkąta, a to nie jest chyba problem bo znamy długości wszystkich trzech boków tegoż trójkąta - będą to |AB|, abs(B.x-A.x) i abs(B.y-A.y).
Jeśli nie chcesz się bawić w liczenie kąta z tego żółtego trójkąta to możesz po prostu użyć funkcji atan2(B.y-A.y,B.x-A.x) - to właśnie będzie ta nasza beta.

Drugie rozwiązanie otrzymasz gdy zamiast alpha+beta weźmiesz beta-alpha.

Nie wiem czy jest inne prostsze i wygodniejsze rozwiązanie ale dla mnie to jest najbardziej intuicyjne ;)
P-54765
Arghiliis
Temat założony przez niniejszego użytkownika
» 2012-04-18 23:26:51
Dzięki wielkie, cóż w szkole takich rzeczy (póki co) nas nie uczą. Jutro się z tym pobawię.
Jeszcze raz dzięki.
P-54797
« 1 »
  Strona 1 z 1