2010-JOGL-08-Torus-Knoten

591 Aufrufe

Veröffentlicht am

0 Kommentare
2 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
591
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
2
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

2010-JOGL-08-Torus-Knoten

  1. 1. CARL VONOSSIETZKY Torus-Knoten Johannes Diemke ¨ Ubung im Modul OpenGL mit Java Wintersemester 2010/2011
  2. 2. Torus-Knoten(p, q)-Torus-Knoten Wird im R3 durch eine Raumkurve r (ϕ) beschrieben p und q m¨ssen relativ prim zueinander sein u Zwei nat¨rliche Zahlen sind teilerfremd oder relativ prim, wenn es u keine nat¨rliche Zahl außer der Eins gibt, die beide Zahlen teilt u Zwei Zahlen a und b sind dann teilerfremd, wenn ihr ggT (a, b) = 1 ist   (cos(qϕ) + 2) · cos(pϕ) r (ϕ) =  (cos(qϕ) + 2) · sin(pϕ)  , 0 ≤ ϕ ≤ 2π sin(qϕ) Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 2/18
  3. 3. Torus-KnotenH¨lle entlang einer Raumkurve u 1 Berechnen des Frenet-Rahmen (Dreibein) 2 Aufspannen von Polygonen Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 3/18
  4. 4. Torus-KnotenH¨lle entlang einer Raumkurve (Forts.) u Beispielhaft anhand folgender Raumkurve   0.5 · (2 + sin(qϕ)) · cos(pϕ) r (ϕ) =  0.5 · (2 + sin(qϕ)) · cos(qϕ)  , 0 ≤ ϕ ≤ 2π 0.5 · (2 + sin(qϕ)) · sin(pϕ) Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 4/18
  5. 5. Torus-KnotenFrenet-Rahmen Bildet eine Orthonormalbasis Ist an jedem Punkt der Kurve gesondert definiert (begleitendes Dreibein) Idee: Entlang der Raumkurve Ringe in der von der Einheitsnormale und Einheitsbinormale aufgespannten Ebene zeichnen Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 5/18
  6. 6. Torus-KnotenFrenet-Rahmen (Forts.)Definition (Frenet-Rahmen)Sei I ⊂ R3 ein Intervall und sei r : I → R3 eine Raumkurve von der wirannehmen, dass sie differenzierbar und frei von Wendepunkten ist. Dasdurch die Raumkurve gleitende Dreibein, auch Frenet-Rahmen genannt,ist eine Orthonormalbasis bestehend aus den drei Vektoren T (ϕ), N(ϕ)und B(ϕ) definiert durch: r (ϕ) T (ϕ) T (ϕ) = , N(ϕ) = , B(ϕ) = T (ϕ) × N(ϕ) r (ϕ) T (ϕ) Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 6/18
  7. 7. Torus-KnotenFrenet-Rahmen (Forts.) Berechnen der beiden Ableitungen r (ϕ) und r (ϕ)   0.5 cos(qϕ)q cos(pϕ) − 0.5(2 + sin(qϕ)) sin(pϕ)p r (ϕ) =  0.5 cos(qϕ)2 q − 0.5(2 + sin(qϕ)) sin(qϕ)q  0.5 cos(qϕ)q sin(pϕ) + 0.5(2 + sin(qϕ)) cos(pϕ)p −0.5 sin(qϕ)q 2 cos(pϕ) − cos(qϕ)q sin(pϕ)p − 0.5(2 + sin(qϕ)) cos(pϕ)p 2   r (ϕ) =  −1.5 cos(qϕ)q 2 sin(qϕ) − 0.5(2 + sin(qϕ)) cos(qt)q 2  −0.5 sin(qϕ)q 2 sin(pϕ) + cos(qϕ)q cos(pϕ)p − 0.5(2 + sin(qϕ)) sin(pϕ)p 2 Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 7/18
  8. 8. Torus-KnotenAufspannen von Ringen Aufspannen von Ringen in der von der Einheitsnormale und Einheitsbinormale aufgespannten Ebenegl.glBegin(GL2.GL_LINE_LOOP); for(int j=0; j < segments; j++) { x = radius * Math.cos(2 * PI / segments * j)); y = radius * Math.sin(2 * PI / segments * j)); // Affine Transformation point = normal(t)*x + binormal(t)*y + curve(t); gl.glVertex3f(point.x, point.y, point.z); }gl.glEnd(); Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 8/18
  9. 9. Torus-KnotenAufspannen von Ringen (Forts.) Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 9/18
  10. 10. Torus-KnotenAufspannen von Polygonen Aufspannen von Polygonen zwischen den Ringen und Berechnung der Vertex-Normalen Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 10/18
  11. 11. Torus-KnotenZwischenstand Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 11/18
  12. 12. Torus-KnotenZwischenstand (Forts.) Die Normale und Binormale machen sprunghaft 180-Grad-Drehungen in den Wendepunkten der Kurve Tangente und Normale sind in den Wendepunkten parallelL¨sung o Dreibein nicht uber zweite Ableitung konstruieren ¨ Approximation uber beliebigen Vektor, der nie parallel ist ¨ Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 12/18
  13. 13. Torus-KnotenApproximation Vektor muss entsprechend der Raumkurve gew¨hlt werden, damit er a nie parallel zur Tangente ist Weiterhin kann im selben Zug auch gleich die Tangente selbst approximiert werden → forward difference Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 13/18
  14. 14. Torus-KnotenApproximation (Forts.) symbolische vs. numerische Ableitung (Forward Difference): point1 := curve(t); point2 := curve(t + delta); unitTangent := normalize(point2 - point1); unitNormal := crossProduct(unitTangent, vec3(0, 1, 0)); unitBinormal := crossProduct(unitTangent, unitNormal); oder alternativ (Central Difference): point1 := curve(t - delta/2); point2 := curve(t + delta/2); unitTangent := normalize(point2 - point1); unitNormal := crossProduct(unitTangent, vec3(0, 1, 0)); unitBinormal := crossProduct(unitTangent, unitNormal); Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 14/18
  15. 15. Torus-KnotenErgebnis (2, 3)- und (5, 3)-Torus-Knoten mit Flat-Shading Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 15/18
  16. 16. Torus-KnotenErgebnis (Forts.) (2, 3)-Torus-Knoten mit Phong-Shading und Schatten Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 16/18
  17. 17. Literatur Dave Shreiner OpenGL Programming Guide http://www.opengl-redbook.com/ Richard S. Wright, Benjamin Lipchak und Nicholas Haemel OpenGL SuperBibel http://www.starstonesoftware.com/OpenGL/ Randi J. Rost OpenGL Shading Language http://www.3dshaders.com/ Tomas Akenine-M¨ller, Eric Haines und Naty Hoffman o Real-Time Rendering http://www.realtimerendering.com/ Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 17/18
  18. 18. Literatur Edward Angel Interactive Computer Graphics http://www.cs.unm.edu/˜angel/ Gerald Farin und Dianne Hansford Practical Linear Algebra http://www.farinhansford.com/books/pla/ Fletcher Dunn und Ian Parberry 3D Math Primer for Graphics and Game Development www.gamemath.com/ Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 18/18

×