Programowanie w języku C/C++ » Artykuły

Szybkie sprawdzanie czy punkt leży na odcinku

Istnieje bardzo prosty sposób na szybkie sprawdzanie, czy dany punkt leży na odcinku opisanym dwoma punktami P1 i P2 (patrz rysunek 1).

<center></center>
Rys. 1 Interpretacja graficzna linii opisanej punktami P1 i P2 oraz przykładowe punkty, których przynależność do odcinka będzie sprawdzana

Punkt P3 leży na odcinku P1-P2 więc spełnia następujący warunek: L1-3 + L3-2 = L1-2, natomiast punkt P4 nie leży na odcinku P1-P2 w związku z czym spełniony jest warunek L1-4 + L2-4 > L1-2.

Na koniec chciałbym zwrócić uwagę, że w związku z ograniczoną dokładnością zapisu liczb w pamięci komputera należy zastosować pewną tolerancję L1-3 + L3-2 <= L1-2 + T, lub zaokrąglenie wyniku.

6 komentarzy

Brak avatara
grzybowa 2013-11-26 11:34

ja pierdole nic nie umiem z programowania

quniq 2010-05-12 14:49

Wydaje mi się, że L, bo w matematyce tak się oznacza długość łuku (tutaj odcinka). W pierwszym momencie nie bardzo zrozumiałem zamiary autora. Proponuję na przyszłość napisać, czemu tak (chociaż tu i  gimnazjalista powinien dojść o co chodzi i ską to się bierze). ;)

gringoM 2008-11-27 09:19

A oznaczenie L wprowadzam bo nie wszyscy są tacy dobrzy i nie wszyscy wiedzą jak używać wektorów a chciałem żeby jak najwięcej osób mogło to zrozumieć

gringoM 2008-11-27 08:39

nie trzeba sprawdzać czy punkt p3 ma współrzędne pomiędzy współrzędnymi punktów P1 i P2 ponieważ gdy punkt P3 nie leży pomiędzy nimi to równanie |P1P3| + |P3P2| = |P1P2| nie jest spełnione.

Spykaj 2008-11-26 17:16

Nie możesz jakichś normalnych znaczeń stosować ? np. |P1P3| + |P3P2| = |P1P2| ?

Po co w ogóle wprowadzasz oznaczenie L ?

I ogólnie można by było jeszcze przedstawić metodę z iloczynem wektorowym, bo jest ogólniejsza, sprawdza nie tylko odcinek AB, ale całą prostą (trzeba jeszcze sprawdzić, czy punkt P3 ma współrzędne x i y pomiędzy współrzędnymi x i y punktów P1 i P2.

gringoM 2008-11-26 10:10

Mały błąd w oznaczeniu na obrazku powinno być L2-4 a nie P2-4.