Wpisany przez Michał Knasiecki,
03 sierpnia 2005 22:47
Niech dane będą trzy punkty określone współrzędnymi: A=(x1,y1), B=(x2,y2), C=(x3,y3).
Chcemy sprawdzić, czy punkt C należy do odcinka |AB|. Najpierw należy sprawdzić, czy wszystkie trzy punktu są współliniowe. Jeżeli są, to przechodzimy do następnego kroku. Łatwo zauważyć, że jeżeli punkt C należy do odcinka |AB| to rzuty prostokątne tego punktu na osie OX i OY wpadają do rzutów prostokątnych odcinka |AB| na te osie:
Drugim warunkiem jest więc: min(x1, x2) <= x3 <= max(x1, x2) oraz min(y1, y2)<= y3 <= max(y1, y2)
Chcemy sprawdzić, czy punkt C należy do odcinka |AB|. Najpierw należy sprawdzić, czy wszystkie trzy punktu są współliniowe. Jeżeli są, to przechodzimy do następnego kroku. Łatwo zauważyć, że jeżeli punkt C należy do odcinka |AB| to rzuty prostokątne tego punktu na osie OX i OY wpadają do rzutów prostokątnych odcinka |AB| na te osie:
Drugim warunkiem jest więc: min(x1, x2) <= x3 <= max(x1, x2) oraz min(y1, y2)<= y3 <= max(y1, y2)
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Tomasz Lubiński | Ada | .ada | .ada | ***** / 2 | |
Michał Knasiecki | C/C++ | .cpp | .cpp | ***** / 7 | |
Michał Knasiecki | Delphi/Pascal | Borland Delphi 5 | .pas | .pas | ***** / 2 |
Tomasz Lubiński | Java | .java | .java | ***** / 1 |
Poprawiony: 28 sierpnia 2012 19:59
Komentarze
+3
#
martucha
2013-04-04 11:06
Jeśli wiemy, że punkt C leży na tej samej prostej co punkty A i B, to chyba wystarczy sprawdzić tylko jeden element drugiego warunku- czyli min(x1, x2)
Odpowiedz | Odpowiedz z cytatem | Cytować
+2
#
Marcin Sz.
2013-04-07 14:06
Martucha, a co jeśli odcinek jest pionowy ? :)
Odpowiedz | Odpowiedz z cytatem | Cytować
+1
#
tora
2015-09-15 11:46
ale, wtedy również to chyba zajdzie bo x1 bedzie równy x2 więc wystarczy że x3 = x2= x1 czyli dalej wystarczy sprawdzic jeden warunek?
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz