Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
Elementare Geometrie für Raytracing
English English English
Italiano Italiano
Français français

Home
- POV-Ray Tutorial

  - Geometrie Grundlagen
    für Raytracing

    Rechtwinkliges Dreieck
    Pythagoras
    Trigonometrie Basis
    Kosinussatz
    Gleichseitiges Dreieck
    Reguläres Polygon
    Polyeder
      Regulärer Tetraeder
      Regulärer Oktaeder
      Würfel & Quader
      Regulärer Dodekaheder
      Regulärer Ikosaeder
      Kuboktaeder
      Oktaederstumpf
      Rhombenkuboktaeder
      Ikosaederstumpf
    Kreise
      Tangierende Kreise
      Interne Tangenten
      Externe Tangenten
     
     
     
     
     
     
     
     
     
   - Geometric 3D Animations

                                               

Interne Tangenten zweier Kreise
Im folgenden wird für die Quadratwurzel einer Zahl, der englische Ausdruck "sqrt(ZAHL)"
gemäß der von POV-Ray verwendeten Syntax geschrieben.

Anmerkung: Hier werden Objekte der 2D-Geometrie durch 3D-Objekte in der xy-Ebene dargestellt.
Daher müssen alle Koordinaten die z-Komponente Null haben! ( <?,?,0>)

Wir suchen eine interne Tangente an zwei Kreise                 von T1 zu T2, wie in nebenstehender Abbildung.
Kreis 1: M1 = <x1,y1,0>, r1.
Kreis 2: M2 = <x2,y2,0>, r2.
Eine interne Tangente ist parallel zu einer Tangente vom Mittelpunkt des kleineren Kreises (hier: M2) zum einem Kreis um den Mittelpunkt des größeren Kreises (M1) aber mit dem Radius von r1+r2.
--------------------      
Zur Berechnung des Punktes S müssen wir zunächst die Seiten des Dreiecks(M2,M1,S) berechnen.
d(M1,S) = r1+r2 .
Laut des Satz des Pythagoras können wir wie folgt rechnen:
d(M1,M2) = sqrt((x2-x1)2+(y2-y2)2) .
Daher ist die dritte Seite (wieder mit dem Satz des Pythagoras):
d(M2,S) = sqrt( d(M1,S)2+d(M1,M1)2)

Der Winkel zwischen der Richtung von (M1,M2) und der x-Richtung kann man mittels trigonometrischer Funktionen berechnen.
Wenn x1 < x2 gilt
  α = abs(degrees( atan ((y2-y1)/(x2-x1))),
sonst gilt:  
  α = 180° - abs(degrees( atan ((y2-y1)/(x2-x1))).

Dann berechnen wir β und γ wie folgt:
  β = abs( degrees( asin( d(M1, S ) / d(M1,M2) ) )) .
  γ =   α -   β .
Die Position von T1:
  xT1 = x1 - r1·cos( Angle(M1S) ).
  yT1 = y1 - r1· sin( Angle(M1S) ).
Die Position von T2:
  xT2 = x2 + r1·cos( Angle(M1S) ).
  yT2 = y2 + r1· sin( Angle(M1S) ).


Interne Tangenten zweier Kreise gerendert mit POV-Ray
Anmerkung: Um eine Kollision mit fest vordefinierten Bezeichnern und in POV-Ray
reservierten Wörter
zu vermeiden, wird dringend empfohlen als Bezeichner für
Variable und Objekte, welche vom Benutzer definiert werden, nur Wörter zu verwenden, die mit einem Großbuchstaben beginnen.
D.h. man verwende "R1" anstatt "r1" und man verwende "Y2" anstelle von "yM2".
#local X1= 0.40; #local Y1= 0.80; #local R1= 0.20;
#local X2= 0.64; #local Y2= 0.15; #local R2= 0.15;
#local M1 = <X1,Y1,0>; #local M2 = <X2,Y2,0>
//------------------------------------------------
#local M_Dist = sqrt(pow(X2-X1,2)+pow(Y2-Y1,2));
#if ( X1 < X2) #local Alpha =
            abs( degrees( atan((Y2-Y1)/(X2-X1))));
#else          #local Alpha =
          180-abs(degrees(atan((Y2-Y1)/(X2-X1))));
#end
#local Beta = abs(degrees(asin((R1+R2)/M_Dist)));
#local Gamma = Alpha - Beta;
#local T1 = M1-<(R1)*cos( radians(Gamma)),
                (R1)*sin( radians(Gamma)),0>;
#local T2 = M2+<(R2)*cos( radians(Gamma)),
                (R2)*sin( radians(Gamma)),0>;
Die Berechnung der Tangente von T1 zu T2 in POV-Ray

Wozu kann man diese Geometrie gebrauchen?
Hier einige Beispiele:
Wir können den unteren Kreis und sein Spiegelbild an der y-Achse als den Querschnitt eine Torus betrachten und die oberen Kreise als einen Torus, welcher von dem gelben Zylinder subtrahiert werden soll:


:

Der Querschnitt eines Erlenmeyer-Kolbens
Ein Erlenmeyer-Kolben
für das Laboratorium
 
Diese Form in einem Makro als ein
gebrauchsfertiges Objekt: Form des Erlenmeyer-Kolbens
Angewandt in einem Makro für ein
gebrauchsfertiges Objekt: Erlenmeyer-Kolben

     
top
© Friedrich A. Lohmüller, 2009
www.f-lohmueller.de