Równanie dwusiecznej kąta w 3D

Obiekty i przekształcenia geometryczne, opisane za pomocą układu (nie zawsze prostokątnego) współrzędnych.
mjamm
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 9 paź 2011, o 19:37
Płeć: Kobieta
Lokalizacja: CK

Równanie dwusiecznej kąta w 3D

Post autor: mjamm »

Cześć. Mój problem wygląda następująco. Mam współrzędne x,y,z trzech punktów w układzie kartezjańskim. Zadanie polega na podaniu współrzędnych punktu oddalonego o jakąś odległość D od punktu nr 2, który leżałby na linii wyznaczającej dwusieczną kąta pomiędzy punktami 1, 2 i 3. Wydaje mi się że zadanie ogranicza się do wyznaczenia równania dwusiecznej. W jaki sposób to zrobić i czy ewentualnie istnieje jakiś prostszy sposób na znalezienie rozwiązania. Dzięki!
chris_f
Użytkownik
Użytkownik
Posty: 2727
Rejestracja: 14 paź 2004, o 16:26
Płeć: Mężczyzna
Lokalizacja: podkarpacie
Podziękował: 3 razy
Pomógł: 945 razy

Równanie dwusiecznej kąta w 3D

Post autor: chris_f »

Da się to zrobić zarówno w 3D, 2D oraz ogólnie w \(\displaystyle{ \mathbb{R}^n,\ n\ge2}\).
Najpierw może ogólnie (wszystkie rozważania można sobie ilustrować na kartce ).
Mamy trzy punkty \(\displaystyle{ A,B,C}\) w przestrzeni (nie ważne ile ma wymiarów). Naszym zadaniem jest znalezienie punktu \(\displaystyle{ D}\) leżącego na dwusiecznej kąta \(\displaystyle{ \sphericalangle ABC}\) i takiego, żeby odległość \(\displaystyle{ |BD|=d}\).
Tworzymy wektory \(\displaystyle{ \stackrel{\longrightarrow}{BA}}\) i \(\displaystyle{ \stackrel{\longrightarrow}{BC}}\). Gdybyśmy dodali te wektory, to otrzymalibyśmy wektor, który leżałby pomiędzy nimi, ale raczej nie leżałby na dwusiecznej. Dlaczego? Powodem jest tu różna długość wektorów \(\displaystyle{ \stackrel{\longrightarrow}{BA}}\) i \(\displaystyle{ \stackrel{\longrightarrow}{BC}}\). Gdyby te długości byłyby takie same, to znaleziony wektor pokrywałby się z dwusieczną. Spróbujmy te długości wyrównać, najprostszą metodą jest tzw. znormalizowanie wektorów, czyli doprowadzenie do sytuacji, że ich długość będzie wynosić \(\displaystyle{ 1}\). Robimy to następująco: \(\displaystyle{ \stackrel{\longrightarrow}{BA}_n=\frac{\stackrel{\longrightarrow}{BA}}{\left|\stackrel{\longrightarrow}{BA}\right|}\ \ \stackrel{\longrightarrow}{BC}_n=\frac{\stackrel{\longrightarrow}{BC}}{\left|\stackrel{\longrightarrow}{BC}\right|}}\)
Teraz gdy dodamy te znormalizowane wektory, to dostaniemy wektor \(\displaystyle{ \stackrel{\longrightarrow}{BD'}}\), który pokrywa się z dwusieczną. Wystarczy go jedynie odpowiednio "wydłużyć" lub "skrócić" aby jego koniec stał się szukanym punktem \(\displaystyle{ D}\). Jak to uzyskać? Normalizujemy wektor \(\displaystyle{ \stackrel{\longrightarrow}{BD'}}\) i mnożymy go przez zadaną odległość \(\displaystyle{ d}\). Ostatecznie
\(\displaystyle{ \stackrel{\longrightarrow}{BD}=d\cdot \stackrel{\longrightarrow}{BD}_n=d\cdot\frac{\stackrel{\longrightarrow}{BD'}}{\left|\stackrel{\longrightarrow}{BD'}\right|}}\)
Zabrzmiało strasznie, ale w praktyce idzie to znacznie szybciej.
Przykład (dla \(\displaystyle{ n=3}\)).
\(\displaystyle{ A=(6,6,10),\ B=(2,2,8),\ C=(2,-2,5)}\), zadana odległość to \(\displaystyle{ 4}\).
Wektory \(\displaystyle{ \stackrel{\longrightarrow}{BA}=[4,4,2],\ \stackrel{\longrightarrow}{BC}=[0,-4,-3]}\) normalizujemy, dzieląc pierwszy przez \(\displaystyle{ \sqrt{4^2+4^2+2^2}=\sqrt{36}=6}\), drugi przez \(\displaystyle{ \sqrt{0^2+(-4)^2+(-3)^2}=\sqrt{25}=5}\), otrzymując wektory znormalizowane \(\displaystyle{ \stackrel{\longrightarrow}{BA}_n=\left[1,1,\frac{5}{3}\right],\ \stackrel{\longrightarrow}{BC}_n=\left[0,-\frac{4}{5},-\frac{3}{5}\right]}\).
Dodajemy te wektory do siebie otrzymując \(\displaystyle{ \stackrel{\longrightarrow}{BD'}=\left[1,\frac{1}{5},\frac{16}{15}\right]}\), normalizujemy go, dzieląc przez \(\displaystyle{ \sqrt{1+\frac{1}{25}+\frac{256}{225}}=\sqrt{\frac{225+9+256}{225}}=\sqrt{\frac{490}{225}}=\frac{7\sqrt{10}}{15}}\), czyli mnożąc przez \(\displaystyle{ \frac{15}{7\sqrt{10}}=\frac{3\sqrt{10}}{14}}\). Otrzymamy
\(\displaystyle{ \stackrel{\longrightarrow}{BD}_n=\left[\frac{3\sqrt{10}}{14},\frac{3\sqrt{10}}{70},\frac{48\sqrt{10}}{210}\right]}\)
No i na koniec otrzymujemy
\(\displaystyle{ D=\left( 2+4\cdot\frac{3\sqrt{10}}{14},2+4\cdot\frac{3\sqrt{10}}{70},8+4\cdot\frac{48\sqrt{10}}{210}\right)=\left(\frac{28+12\sqrt{10}}{14},\frac{140+12\sqrt{10}}{70},\frac{1680+192\sqrt{10}}{210}\right)}\)
Mam nadzieję, że w swoje zadanie będziesz liczył na kompie, napisanie algorytmu jest tu bardzo proste.
mjamm
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 9 paź 2011, o 19:37
Płeć: Kobieta
Lokalizacja: CK

Równanie dwusiecznej kąta w 3D

Post autor: mjamm »

Świetny pomysł z tą normalizacją. Bardzo dziękuję!
ODPOWIEDZ