algorytm.org

Współliniowość trzech punktów

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Współliniowość trzech punktów
Ocena użytkowników:***** / 34
SłabyŚwietny 
Wpisany przez Michał Knasiecki, 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:
\begin{bmatrix} x_1 & y_1 & 1\\ x_2 & y_2 & 1\\ x_3 & y_3 & 1 \end{bmatrix}
det (a,b,c)>0 : punkt c znajduje się po lewej stronie wektora AB -
Image

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

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

Przykład:

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) = \begin{bmatrix} 1 & 1 & 1\\ 9 & 1 & 1\\ 4 & 4 & 1 \end{bmatrix} = 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.

Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiAda
.ada
.ada
***** / 2
Michał KnasieckiC/C++
.cpp
.cpp
***** / 7
Michał KnasieckiDelphi/PascalBorland Delphi 5
.pas
.pas
***** / 2
Tomasz LubińskiJava
.java
.java
***** / 2
Jakub KoniecznyPython
.py
.py
***** / 2
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie

Poprawiony: 27 sierpnia 2012 21:07
Dodaj komentarz