Conics

Werbung
Theorie und Praxis geometrischer Algorithmen
Conics
Von Marc Meier
Conics
• Einfache Conics
•
•
•
•
•
•
Geradenpaar
Ellipse
Parabel, Hyperbel
Ausgeartete Conics
Allgemeiner Kegelschnitt
Conic Bögen
• Schnitt zweier Conics
•
•
•
•
•
Schnitt
Sweep Line Algorithmus
Multiplizität des Schnittes
compare_xy
Weitere Prädikate
Doppelkegel
Wie kann eine 2-dimensionale Ebene diesen Doppelkegel schneiden?
Conics
Geradenpaar
• Parallele Geraden
• Identische Geraden
• Schneidende Geraden
C ( x, y )  ( x  y  1)( x  y  1)
C ( x, y )  ( x  y  1)( x  y  1)
C ( x, y )  ( x  y  1)( 2 x  y  1)
Ellipse
Kreis
Ellipse
Ellipse (2)
Ellipsenformeln (Normalform): Sei a die Hauptachse der
Ellipse
x² y ²
 1  0
a ² b²
Diese Formel beschreibt eine Ellipse die
breiter als hoch ist
x² y ²
 1  0
b² a ²
Diese Formel beschreibt eine Ellipse die
höher als breit ist
Wir betrachten Ellipsengleichungen der Form:
C ( x, y )  x ²  2 y ²  1
Hyperbel
Parabel
Hyperbel
Parabel
Wir betrachten Parabeln der Form:
C(x, y)=x²+4y²+4xy-y
oder
Normalform
Sonderform
nicht x-monoton
Hyperbel (2)
Hyperbelformeln (Normalform): Sei a>b
x² y ²
 1  0
a ² b²
x² y ²
 1  0
b² a ²
Wir betrachten Hyperbelgleichungen der Form:
C ( x, y )  x ²  y ²  1
Hyperbel (Sonderform)
Die Hyperbel hat bei (0,0) eine
Polstelle.
Ausgeartete Conics
Leere Menge: Gleichung der Form C(x, y)= x² + y² +1
Ein einzelner Punkt: C(x, y) = x² + y²
Wir betrachten im folgenden Ellipsen, Hyperbeln und Parabeln
da weder Geraden noch die ausgearteten Formen mathematisch
interessant sind.
Allgemeine Formel
ax ²  by ²  2cxy  2dx  2ey  f  0
Diese Formel kann umgeschrieben werden
Setze: a ( x)  b,
b( x)  2cx  2e,
a(x)*y²+b(x)*y+c(x)=0
c( x)  ax ²  2dx  f
nach y auflösen ergibt:
oder
y
 b( x)  b( x)²  4a ( x)c( x)
falls b
2a ( x )
y
 c( x)
falls b=0 und b(x)
b( x )
0
0
Algebraische Zahlen
Wir bezeichnen eine algebraische Zahl als
Wurzelausdruck, wenn sie von folgender Form ist:
  
wobei       Q
Wir stellen algebraische Zahlen x entweder als
Wurzelausdrücke oder als Tripel (P,l,r) dar.(siehe
6.5.)
Conic Bögen
C
C1
C0
x1
x2
Conic C zerfällt in seine Bögen C0 und C1
Bögen C0 und C1 sind Funktionen in x, d.h. C1(x) ist der YWert des oberen Bogens von C an der Stelle x.
Schnitt zweier Conics
Gegeben: Conics C und D, dann gilt:
x ( x, y)  f
 g  x R( f , g , y)  0
f und g sind die Funktionen die C und D berechnen und R ist
die Resultante von C und D.
R kann aber noch weitere Nullstellen haben.
x1 und x2 sind Nullstellen von R obwohl
es keine Schnittpunkte sind.
Wir sprechen von`“one-curve-events“
x1
x2
LEMMA:Ein Polynom p vom Grad vier hat entweder vier
einfache Nullstellen oder alle Nullstellen von p sind
Wurzelausdrücke.
Wie kann man nun herausfinden ob eine Nullstelle von R auch
ein Schnittpunkt von Ci und Dj ist?
C1
D1
C0
D2
[]
x1
[] []
x2 x3
[] []
x5
x3 und x4 sind Nullstellen der Resultante. Was ist wenn beide als Tripel (R, l, r) vorliegen?
Nach Lemma sind x3 und x4 einfache Nullstellen von R und die Bögen schneiden sich dort
falls sie sich überhaupt schneiden.
[]
x1
[] []
x2 x3
[] []
x5
Die Intervalle von x3 und x4 müssen nun soweit verfeinert werden bis sie sich nicht mehr
überlappen.
Ci und Dj schneiden sich nun bei x wenn sich die Vorzeichen von Ci(r)-Dj(r) und Ci(l)-Dj(l)
unterscheiden.
Anpassen des Sweep Line
Algorithmus
Problem:
4
?
3
2
1
Reihenfolge der Bögen
in der Y-Struktur ist
bekannt.
p
Wie ist die Reihenfolge der Bögen
nach dem gemeinsamen
Schnittpunkt p?
Multiplizität des Schnittes
Sei p = (x,y) Schnittpunkt zweier Bögen Ci, Dj.
Dann ist x eine Nullstelle der Resultante von C und D.
Sei m nun die Multiplizität von x als Nullstelle der Resultante
die wir folgendermassen berechnen:
4
r ( x)   ( pi ( x)) i
i 1
m wird durch das Polynom bestimmt in dem x vorkommt,
dadurch kann m nie größer als 4 werden.
Wenn m=1, so ist die Multiplizität des Schnittes 1. Ist
m >1, dann gibt es einen Wurzelausdruck für x.
Hat einer der Conics nur einen Bogen so ist die
Multiplizität des Schnittes immer m.
Intuitiver Ansatz: siehe Beispiele an der Tafel
Wichtig: Wenn die Multiplizität ungerade ist, so
ändert sich die Reihenfolge der Kurven in der YStruktur, bei gerader Multiplizität bleibt die
Reihenfolge gleich.
compare_xy
Ziel: lexikografische Einordnung von Punkten nach x und y
Koordinaten.
Wir beschreiben Punkte auf einem Conic durch ein Tripel
(x, Ci, Ai), wobei Ci der Conic ist auf dem x liegt und Ai
anzeigt ob x auf dem oberen oder dem unteren Bogen von
Ci liegt.
compare_xy(2)
compare _ xy : P1( x1, C 1, A1), P 2( x 2 , C 2, A2)
if ( x1  x 2)
Vergleich zweier alg. Zahlen.
elseif (C 1  C 2)
Vergleich von C1(x) mit C2(x)
elseif ( A1  A2)
Vergleich von A1(x) mit A2(x)
else
(x1, C(x1)) = (x2, C(x2))
Weitere Prädikate
do_overlap:Testet ob sich Bögen oder Segmente überschneiden.
compare_y_at_x:Stellt fest ob ein Punkt aus dem x-Abschnitt
eines Segmentes, über, unter oder auf dem Segment liegt.
compare_y_right_of_point: Vergleicht zwei Segmente um ihre
Y-Reihenfolge rechts des gemeinsamen Punktes zu bestimmen.
Wird genutzt um neu startende Segmente in die Y-Struktur
einzusortieren.
intersect:Bestimmt ob sich zwei Segmente schneiden, wenn ja
dann werden die Schnittpunkte lexikografisch ausgegeben.
Herunterladen