SlideShare ist ein Scribd-Unternehmen logo
CARL
      VON
OSSIETZKY
            Torus-Knoten

            Johannes Diemke

            ¨
            Ubung im Modul OpenGL mit Java
            Wintersemester 2010/2011
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
Torus-Knoten


H¨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
Torus-Knoten


H¨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
Torus-Knoten


Frenet-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
Torus-Knoten


Frenet-Rahmen (Forts.)
Definition (Frenet-Rahmen)
Sei I ⊂ R3 ein Intervall und sei r : I → R3 eine Raumkurve von der wir
annehmen, dass sie differenzierbar und frei von Wendepunkten ist. Das
durch 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
Torus-Knoten


Frenet-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
Torus-Knoten


Aufspannen von Ringen
     Aufspannen von Ringen in der von der Einheitsnormale und
     Einheitsbinormale aufgespannten Ebene


gl.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
Torus-Knoten


Aufspannen von Ringen (Forts.)




   Johannes Diemke      OpenGL mit Java   WiSe 2010 / 2011   9/18
Torus-Knoten


Aufspannen von Polygonen
   Aufspannen von Polygonen zwischen den Ringen und Berechnung
   der Vertex-Normalen




   Johannes Diemke         OpenGL mit Java      WiSe 2010 / 2011   10/18
Torus-Knoten


Zwischenstand




   Johannes Diemke   OpenGL mit Java   WiSe 2010 / 2011   11/18
Torus-Knoten


Zwischenstand (Forts.)
   Die Normale und Binormale machen sprunghaft
   180-Grad-Drehungen in den Wendepunkten der Kurve
   Tangente und Normale sind in den Wendepunkten parallel

L¨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
Torus-Knoten


Approximation
   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
Torus-Knoten


Approximation (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
Torus-Knoten


Ergebnis
   (2, 3)- und (5, 3)-Torus-Knoten mit Flat-Shading




    Johannes Diemke          OpenGL mit Java          WiSe 2010 / 2011   15/18
Torus-Knoten


Ergebnis (Forts.)
    (2, 3)-Torus-Knoten mit Phong-Shading und Schatten




    Johannes Diemke         OpenGL mit Java        WiSe 2010 / 2011   16/18
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
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

Weitere ähnliche Inhalte

Was ist angesagt?

Polynomproblem
PolynomproblemPolynomproblem
Polynomproblem
Heinrich Hartmann
 
Dimension und Multiplizität von D-Moduln
Dimension und Multiplizität von D-ModulnDimension und Multiplizität von D-Moduln
Dimension und Multiplizität von D-Moduln
Heinrich Hartmann
 
Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)
Johannes Diemke
 
Mathcad formelsammlung 3-teiltest
Mathcad   formelsammlung 3-teiltestMathcad   formelsammlung 3-teiltest
Mathcad formelsammlung 3-teiltest
doom bringer
 
4to Trabajo de Matematica Aplicada II - Series de Fourier - UNTECS
4to Trabajo de Matematica Aplicada II - Series de Fourier - UNTECS4to Trabajo de Matematica Aplicada II - Series de Fourier - UNTECS
4to Trabajo de Matematica Aplicada II - Series de Fourier - UNTECS
Ing. Electrónica xD
 
07 abiturvorbereitung analysis newton
07 abiturvorbereitung analysis newton07 abiturvorbereitung analysis newton
07 abiturvorbereitung analysis newton
PaulFestl
 
2010-JOGL-12-Projection-Shadows
2010-JOGL-12-Projection-Shadows2010-JOGL-12-Projection-Shadows
2010-JOGL-12-Projection-Shadows
Johannes Diemke
 
Tabla%20de%20transformadas%20de%20 laplace[1]
Tabla%20de%20transformadas%20de%20 laplace[1]Tabla%20de%20transformadas%20de%20 laplace[1]
Tabla%20de%20transformadas%20de%20 laplace[1]
Draco Ismael Hernandex
 

Was ist angesagt? (8)

Polynomproblem
PolynomproblemPolynomproblem
Polynomproblem
 
Dimension und Multiplizität von D-Moduln
Dimension und Multiplizität von D-ModulnDimension und Multiplizität von D-Moduln
Dimension und Multiplizität von D-Moduln
 
Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)Theory Exploration (Ausarbeitung)
Theory Exploration (Ausarbeitung)
 
Mathcad formelsammlung 3-teiltest
Mathcad   formelsammlung 3-teiltestMathcad   formelsammlung 3-teiltest
Mathcad formelsammlung 3-teiltest
 
4to Trabajo de Matematica Aplicada II - Series de Fourier - UNTECS
4to Trabajo de Matematica Aplicada II - Series de Fourier - UNTECS4to Trabajo de Matematica Aplicada II - Series de Fourier - UNTECS
4to Trabajo de Matematica Aplicada II - Series de Fourier - UNTECS
 
07 abiturvorbereitung analysis newton
07 abiturvorbereitung analysis newton07 abiturvorbereitung analysis newton
07 abiturvorbereitung analysis newton
 
2010-JOGL-12-Projection-Shadows
2010-JOGL-12-Projection-Shadows2010-JOGL-12-Projection-Shadows
2010-JOGL-12-Projection-Shadows
 
Tabla%20de%20transformadas%20de%20 laplace[1]
Tabla%20de%20transformadas%20de%20 laplace[1]Tabla%20de%20transformadas%20de%20 laplace[1]
Tabla%20de%20transformadas%20de%20 laplace[1]
 

Andere mochten auch

2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJ2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJ
Johannes Diemke
 
2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-Mapping2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-Mapping
Johannes Diemke
 
2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-Shading2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-Shading
Johannes Diemke
 
Polymorphie
PolymorphiePolymorphie
Polymorphie
Johannes Diemke
 
Prozedurale Texturen
Prozedurale TexturenProzedurale Texturen
Prozedurale Texturen
Johannes Diemke
 
Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)
Johannes Diemke
 
Pfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen PotentialfeldernPfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen Potentialfeldern
Johannes Diemke
 
Codificación e identificación de productos – código de barras GS1
Codificación e identificación  de productos – código de barras GS1Codificación e identificación  de productos – código de barras GS1
Codificación e identificación de productos – código de barras GS1
Universidad Peruana Unión
 

Andere mochten auch (8)

2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJ2010-JOGL-10-Wavefront-OBJ
2010-JOGL-10-Wavefront-OBJ
 
2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-Mapping2010-JOGL-09-Texture-Mapping
2010-JOGL-09-Texture-Mapping
 
2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-Shading2010-JOGL-11-Toon-Shading
2010-JOGL-11-Toon-Shading
 
Polymorphie
PolymorphiePolymorphie
Polymorphie
 
Prozedurale Texturen
Prozedurale TexturenProzedurale Texturen
Prozedurale Texturen
 
Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)Software Produktlinien: Einführung und Überblick (Vortrag)
Software Produktlinien: Einführung und Überblick (Vortrag)
 
Pfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen PotentialfeldernPfadplanung mit harmonischen Potentialfeldern
Pfadplanung mit harmonischen Potentialfeldern
 
Codificación e identificación de productos – código de barras GS1
Codificación e identificación  de productos – código de barras GS1Codificación e identificación  de productos – código de barras GS1
Codificación e identificación de productos – código de barras GS1
 

Mehr von Johannes Diemke

2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material
Johannes Diemke
 
2010-JOGL-05-Transformationen
2010-JOGL-05-Transformationen2010-JOGL-05-Transformationen
2010-JOGL-05-Transformationen
Johannes Diemke
 
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
Johannes Diemke
 
2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung
Johannes Diemke
 
2010-JOGL-01-Organisation
2010-JOGL-01-Organisation2010-JOGL-01-Organisation
2010-JOGL-01-Organisation
Johannes Diemke
 
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Johannes Diemke
 
Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Theory Exploration (Vortrag)
Theory Exploration (Vortrag)
Johannes Diemke
 
Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)
Johannes Diemke
 
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
Johannes Diemke
 
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Johannes Diemke
 
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumAgile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
Johannes Diemke
 
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Johannes Diemke
 

Mehr von Johannes Diemke (13)

2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material2010-JOGL-06-Licht-und-Material
2010-JOGL-06-Licht-und-Material
 
2010-JOGL-05-Transformationen
2010-JOGL-05-Transformationen2010-JOGL-05-Transformationen
2010-JOGL-05-Transformationen
 
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
2010-JOGL-04-Geometrische-Primitive-und-Hidden-Surface-Removal
 
2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung2010-JOGL-02-Einfuehrung
2010-JOGL-02-Einfuehrung
 
2010-JOGL-01-Organisation
2010-JOGL-01-Organisation2010-JOGL-01-Organisation
2010-JOGL-01-Organisation
 
Boost C++ Libraries
Boost C++ LibrariesBoost C++ Libraries
Boost C++ Libraries
 
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
Einführung in minimale Spannbäume und deren Berechnung (Ausarbeitung)
 
Theory Exploration (Vortrag)
Theory Exploration (Vortrag)Theory Exploration (Vortrag)
Theory Exploration (Vortrag)
 
Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)Domainvergabe durch die DENIC (Vortrag)
Domainvergabe durch die DENIC (Vortrag)
 
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010Team Oldenburger Robo-Fußball – Abschlussbericht  der Projektgruppe  2010
Team Oldenburger Robo-Fußball – Abschlussbericht der Projektgruppe 2010
 
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
Vorstellung des Roboterfußball-Teams TORF (Ausarbeitung)
 
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: ScrumAgile Vorgehensmodelle in der Softwareentwicklung: Scrum
Agile Vorgehensmodelle in der Softwareentwicklung: Scrum
 
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)Vorstellung des Roboterfußball-Teams TORF (Vortrag)
Vorstellung des Roboterfußball-Teams TORF (Vortrag)
 

2010-JOGL-08-Torus-Knoten

  • 1. CARL VON OSSIETZKY Torus-Knoten Johannes Diemke ¨ Ubung im Modul OpenGL mit Java Wintersemester 2010/2011
  • 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. Torus-Knoten H¨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. Torus-Knoten H¨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. Torus-Knoten Frenet-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. Torus-Knoten Frenet-Rahmen (Forts.) Definition (Frenet-Rahmen) Sei I ⊂ R3 ein Intervall und sei r : I → R3 eine Raumkurve von der wir annehmen, dass sie differenzierbar und frei von Wendepunkten ist. Das durch 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. Torus-Knoten Frenet-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. Torus-Knoten Aufspannen von Ringen Aufspannen von Ringen in der von der Einheitsnormale und Einheitsbinormale aufgespannten Ebene gl.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. Torus-Knoten Aufspannen von Ringen (Forts.) Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 9/18
  • 10. Torus-Knoten Aufspannen von Polygonen Aufspannen von Polygonen zwischen den Ringen und Berechnung der Vertex-Normalen Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 10/18
  • 11. Torus-Knoten Zwischenstand Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 11/18
  • 12. Torus-Knoten Zwischenstand (Forts.) Die Normale und Binormale machen sprunghaft 180-Grad-Drehungen in den Wendepunkten der Kurve Tangente und Normale sind in den Wendepunkten parallel L¨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. Torus-Knoten Approximation 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. Torus-Knoten Approximation (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. Torus-Knoten Ergebnis (2, 3)- und (5, 3)-Torus-Knoten mit Flat-Shading Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 15/18
  • 16. Torus-Knoten Ergebnis (Forts.) (2, 3)-Torus-Knoten mit Phong-Shading und Schatten Johannes Diemke OpenGL mit Java WiSe 2010 / 2011 16/18
  • 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. 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