Wpisany przez Michał Knasiecki
środa, 03 sierpnia 2005 22:51
Zrozumienie tego algorytmu wymaga zaznajomienia się ze wstępem do geometrii obliczeniowej
Wzajemne położenie trzech punktów a, b i c można bardzo łatwo określić korzystając z wyznacznika det(a,b,c) macierzy kwadratowej postaci:

det (a,b,c)>0 : punkt c znajduje się po lewej stronie wektora AB -

det (a,b,c)=0 : punkty a, b, i c są współliniowe -

det (a,b,c)<0 : punkt c znajduje się po prawej stronie wektora AB -

Łatwo zrozumieć to na przykładzie:
dane są trzy punkty: a=(1,1), b=(9,1) oraz c=(4,4). Chcemy określić położenie punktu c względem wektora AB.
Budujemy macierz kwadratową i obliczamy jej wyznacznik (metodą Sarrusa):
det(a,b,c) =
= 1 + 4*9 + 4 - 4 -4 -9 = 24
det(a,b,c)>0, więc punkt c leży po lewej stronie wektora AB. Czy tak jest faktycznie? Można to sprawdzić nanosząc współrzędne punktów na układ kartezjański.
Wzajemne położenie trzech punktów a, b i c można bardzo łatwo określić korzystając z wyznacznika det(a,b,c) macierzy kwadratowej postaci:

det (a,b,c)>0 : punkt c znajduje się po lewej stronie wektora AB -

det (a,b,c)=0 : punkty a, b, i c są współliniowe -
det (a,b,c)<0 : punkt c znajduje się po prawej stronie wektora AB -

Łatwo zrozumieć to na przykładzie:
dane są trzy punkty: a=(1,1), b=(9,1) oraz c=(4,4). Chcemy określić położenie punktu c względem wektora AB.
Budujemy macierz kwadratową i obliczamy jej wyznacznik (metodą Sarrusa):
= 1 + 4*9 + 4 - 4 -4 -9 = 24det(a,b,c)>0, więc punkt c leży po lewej stronie wektora AB. Czy tak jest faktycznie? Można to sprawdzić nanosząc współrzędne punktów na układ kartezjański.
| Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
| Tomasz Lubiński | Ada | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 | |
| Michał Knasiecki | C/C++ | ![]() | ![]() |
![]() ![]() ![]() ![]() / 7 | |
| Michał Knasiecki | Delphi/Pascal | Borland Delphi 5 | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 |
| Tomasz Lubiński | Java | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 | |
| Jakub Konieczny | Python | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 |
Poprawiony: poniedziałek, 20 czerwca 2011 21:31



/ 2


