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

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 4842 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.

Propozycje książek
tytuł: Algorytmy. Ilustrowany przewodnik autor: Aditya Bhargava

Tytuł:

Algorytmy. Ilustrowany przewodnik

Autor:

Aditya Bhargava

tytuł: Algorytmy. Struktury danych i złożoność obliczeniowa autor: Feliks Kurp

Tytuł:

Algorytmy. Struktury danych i złożoność obliczeniowa

Autor:

Feliks Kurp

tytuł: Algorytmy w Pythonie. Techniki programowania dla praktyków autor: Piotr Wróblewski

Tytuł:

Algorytmy w Pythonie. Techniki programowania dla praktyków

Autor:

Piotr Wróblewski

tytuł: Matematyka dyskretna dla praktyków. Algorytmy i uczenie maszynowe w Pythonie autor: Ryan T. White, Archana Tikayat Ray

Tytuł:

Matematyka dyskretna dla praktyków. Algorytmy i uczenie maszynowe w Pythonie

Autor:

Ryan T. White, Archana Tikayat Ray

tytuł: Algorytmy kryptograficzne w Pythonie. Wprowadzenie autor: Shannon W. Bray

Tytuł:

Algorytmy kryptograficzne w Pythonie. Wprowadzenie

Autor:

Shannon W. Bray

tytuł: Algorytmy sztucznej inteligencji. Ilustrowany przewodnik autor: Rishal Hurbans

Tytuł:

Algorytmy sztucznej inteligencji. Ilustrowany przewodnik

Autor:

Rishal Hurbans

tytuł: Algorytmy bez tajemnic  autor: Thomas H. Cormen

Tytuł:

Algorytmy bez tajemnic

Autor:

Thomas H. Cormen

tytuł: Algorytmy dla bystrzaków autor: John Paul Mueller, Luca Massaron

Tytuł:

Algorytmy dla bystrzaków

Autor:

John Paul Mueller, Luca Massaron

tytuł: Algorytmy Data Science. Siedmiodniowy przewodnik. Wydanie II autor: David Natingga

Tytuł:

Algorytmy Data Science. Siedmiodniowy przewodnik. Wydanie II

Autor:

David Natingga

tytuł: Algorytmy uczenia maszynowego. Zaawansowane techniki implementacji autor: Giuseppe Bonaccorso

Tytuł:

Algorytmy uczenia maszynowego. Zaawansowane techniki implementacji

Autor:

Giuseppe Bonaccorso

W związku z tym, że firma Helion nie wywiązuje się z swoich zobowiązań naliczania prowizji za każdą zakupioną książkę a kontakt z ową frmą jest nie możliwy autor strony zmuszony został do zablokowania linkowania książek. Za wszelkie niedogodności z tym związane z góry przepraszam i obiecuję włączenie linkowania gdy tylko sprawa zostanie wyjaśniona

Załączniki:

Program pokazujący działanie algorytmu