Elipsa i dwa punkty w 3D
Peter: Witajcie,
Prosiłbym o pomoc.
| x2 | | y2 | | z2 | |
Potrzebuje wyznaczyć punkty przecięcia elipsy ( |
| + |
| + |
| =1) i prostej |
| a2 | | b2 | | c2 | |
biegnącej przez dwa punkty P
1 (x
1,y
1,z
1) i P
2 (x
2,y
2,z
2)
Niestety nie wiem jak je wyznaczyć. Przy elipsie 2D jest to proste, ale w 3D już to mi nie
wychodzi.
31 sie 17:59
kerajs:
To nie jest elipsa, ale elipsoida.
A rozwiązujesz zwyczajnie, układem równań z równaniem elipsoidy i równaniem prostej.
31 sie 18:15
Peter: No tak, przepraszam za błąd, trochę łapię już
| x−x1 | | y−y1 | | z−z1 | |
równanie prostej będzie takie: |
| = |
| = |
| |
| x2−x1 | | y2−y1 | | z2−z1 | |
Tylko jak zbudować ten układ równań?
31 sie 18:35
jc: Wstaw do równania elipsoidy
x=x1 + t(x2−x1)
y=y1 + t(y2−y1)
z=z1 + t(z2−z1)
Otrzymasz równanie kwadratowe dla z niewiadomą t.
Równanie może nie mieć rozwiązania (prosta nie przecina powierzchni),
może mieć jedno rozwiązanie (prosta jest styczna do powierzchni)
lub dwa rozwiązania.
31 sie 19:20
Peter: hmmm doszedłem do etapu:
Z równania prostej wyznaczam:
| y−y1 | |
x = |
| * (x2−x1)+x1; |
| y2−y1 | |
| y−y1 | |
z = |
| * (z2−z1)+z1; |
| y2−y1 | |
to mogę wstawić do równania elipsoidy, ale najpierw to wyprowadzam:
| a2b2c2 − x2b2c2−z2a2b2 | |
y=√ |
| |
| a2c2 | |
jak to policzymy wyjdą nam współrzędne Y, potem wstawimy do równania prostej i wyjdzie Z i X.
Pytanie jak policzyć drugi punkt przecięcia elipsoidy ? A może coś źle robię ?
31 sie 19:23
Peter: Dzięki
JC, już kapuje
31 sie 19:48
Peter: Udało się zrobić,
Wersja podstawowa działa
Wersja z przesunięciem elipsoidy też działa:
(x1+t(x2−x1) − x0)2 | | (y1+t(y2−y1) − y0)2 | |
| + |
| + |
a2 | | b2 | |
Pozostaje
pytanie jak zrobić ostatnią wersję z obrotem o kąt α,β.γ dla tych trzech osi ?
Gdzie mam wstawić sin i cos aby było dobrze ?
Dalej tak jak
JC napisał to się upraszcza w obliczeniach i mamy funkcje kwadratową,
liczymy deltę jak jest większa od zera to mamy dwa przecięcia i liczymy t
1, t
2. Które potem
wstawiamy do wzorów:
X
1=x
1 + t
1(x
2−x
1); X
2=x
1 + t
2(x
2−x
1)
Y
1=y
1 + t
1(y
2−y
1); Y
2=y
1 + t
2(y
2−y
1)
Z
1=z
1 + t
1(z
2−z
1); Z
2=z
1 + t
2(z
2−z
1)
2 wrz 11:59
2 wrz 13:12