Obliczenie punktów przecięcia okręgu z prostą

Stronę tą wyświetlono już: 514 razy

Niech istnieją dwa wektory określające linię V1 i V2 oraz okrąg, dla którego dany jest punkt centralny VC i promień R (jak na rysunku 1). Konieczne jest następujące założenie: V1V2. Istnieje możliwość obliczenia wektorów V4 oraz V5 będących przecięciami prostej z tym okręgiem. Dowolna prosta może mieć z dowolnym okręgiem dwa punkty przecięcia (wektory V4 oraz V5 są różne), jeden punkt przecięcia (wektory V4 oraz V5 mają te same współrzędne) lub nie mieć punktów przecięcia. W celu obliczenia punktów przecięcia należy zrzutować prostopadle wektor VC na prostą opisaną wektorami V1 i V2 otrzymując w ten sposób wektor V3. Aby dowiedzieć się więcej o obliczeniach związanych z rzutowaniem prostopadłym punktu na prostą proszę o zapoznanie się z artykułem "Rzutowanie punktu prostopadle na prostą". Gdy spełniona jest nierówność |VC-V3|≤R wtedy okrąg ma jeden lub dwa punkty przecięcia z prostą i należy przystąpić do dalszych obliczeń współrzędnych tych punktów.

Interpretacja graficzna do obliczeń współrzędnych punktów przecięcia okręgu z prostą.
Rys. 1
Interpretacja graficzna do obliczeń współrzędnych punktów przecięcia okręgu z prostą.

Na rysunku 1 pokazana jest interpretacja graficzna wcześniej wymienionych wektorów oraz linii i okręgu. Na tym rysunku można wyróżnić dwa trójkąty prostokątne, które są swoim lustrzanym odbiciem względem linii łączącej wektory VC oraz V3. Długość przeciwprostokątnej tych trójkątów jest znana i wynosi R, natomiast długość jednej z przyprostokątnych można wyznaczyć w następujący sposób:

Znając te dwie wartości można obliczyć długość wektora powstałego z różnicy wektorów V3 i V4 oraz V3 i V5 wykorzystując twierdzenie Pitagorasa:

Teraz należy obliczyć wektor pomocniczy Vp=V4-V3 wykorzystując fakt, że wektor ten jest równoległy do wektora V2-V1. W związku z powyższym wystarczy jedynie przeskalować uzyskany wektor V2-V1 tak aby jego długość wynosiła znaną już wartość L2. Operacja ta jest bardzo prosta i wygląda następująco:

A więc dzielę wektor V2-V1 przez jego długość uzyskując dzięki temu wektor o długości 1 i jednocześnie mnożę przez długość L2 uzyskując w ten sposób wektor o tejże długości. Mając wektor Vp można, a nawet trzeba obliczyć wektory V4 oraz V5 w następujący sposób:

Gdy okrąg ma z linią tylko jeden punkt przecięcia wektor Vp ma długość równą 0, w związku z czym punkty przecięcia V4, V5 oraz V3 mają te same współrzędne.

Załączniki:

Program pokazujący działanie algorytmu

Komentarze