Praktikum Computergrafik - Übung 2: IRIT

Thomas von Siebenthal/13.4.96

(So sieht eine WinWord Datei aus, wenn man Sie mit dem Microsoft Word Internet Assistant 2.0z als HTML Datei speichert und dann ca. 10 Minuten lang überarbeitet.)


Zahnrad

Mein Zahnrad besteht aus einem grossen, flachen Zylinder, dem ich 16 mal mit einem kleinen Zylinder einen Zacken "ausstanze". In IRIT lässt sich dies mit CSG sehr praktisch erledigen. Dabei habe ich die Auflösung verschlechtert, um den Eindruck von Zacken zu erreichen.

zahnrad=cylin(vector(0,0,0), vector(0,0,0.1), 1);

resolution=10;

for(x=0.0, 1.0, 15.0,

alpha = 2*PI/16.0*x :

zahnrad=zahnrad-cylin(vector(cos(alpha), sin(alpha), -0.1), vector(0,0,0.3), 0.125)

);

view(list(zahnrad), TRUE);


Tasse & Teller

Die Tasse und auch der Teller bestehen aus einer B-Spline Kurve, die eine Hälfte der Kontur beschriebt. Mit der Funktion "surfrev" wir dann der ganze Rotationskörper erstellt. Der Tasse habe ich dann noch mit der Funktion "sweepsrf" einen allgemeinen Zylinder als Henkel angesetzt.

Tasse_Kurve = cbspline(4, list(ctlpt(E3, 0.03, 0.0, 0.0),

ctlpt(E3, 0.03, 0.0, 0.005),

ctlpt(E3, 0.06, 0.0, 0.005),

ctlpt(E3, 0.06, 0.0, 0.09)),

list(KV_OPEN));

Henkel_achse = cbspline(3, list(ctlpt(E3, 0.052, 0.0, 0.03),

ctlpt(E3, 0.07, 0.0, 0.03),

ctlpt(E3, 0.08, 0.0, 0.07),

ctlpt(E3, 0.059, 0.0, 0.07)),

list(KV_OPEN));

Henkel = sweepsrf(circle(vector(0,0,0), 0.005), Henkel_achse, 1);

Tasse = list(Henkel, surfrev(Tasse_Kurve));

color(Tasse, GREEN);

Tasse = Tasse*scale(vector(1.7,1.7,1.7))*trans(vector(0,0,0.2));

Teller_Kurve = cbspline(3, list(ctlpt(E3, 0.0, 0.0, 0.0),

ctlpt(E3, 1.0, 0.0, 0.0),

ctlpt(E3, 1.0, 0.0, 0.1)),

list(KV_OPEN));

Teller = surfrev(Teller_Kurve)*scale(vector(0.25, 0.25, 0.25))*trans(vector(0,0,0.2));

Color(Teller, GREEN);

Gedeck = list(Teller, Tasse*trans(vector(0.3, 0.3, 0)));

view(list(Gedeck), TRUE);


Frühstückstisch

Ähnlich zu BOOGA lassen sich in IRIT auch Teile einer Szene definieren und wiederverwenden. Beim links abgebildeten Frühstückstisch habe ich folgende Hierarchien eingesetzt:



Gipfeli, oder wie es nicht sein sollte

Leider ist mein Gipfeli nicht gerade so gekommen, wie es sein sollte. Die eine Hälfte scheint wirklich beinahe ein Gipfeli zu sein, doch dann haben die Bezier- und B-Spline Kurven verrückt gespielt ...

gipfeli_achse = cbspline(4, list(ctlpt(E3,-0.10, 0.00, 0.0),

ctlpt(E3,-0.45, 0.35, 0.0),

ctlpt(E3, 0.00, 0.50, 0.0),

ctlpt(E3, 0.45, 0.35, 0.0),

ctlpt(E3, 0.10, 0.00, 0.0)),

list(KV_OPEN));

gipfeli_schnitt = circle(vector(0,0,0), 0.25);

gipfeli_dicke = cbezier(list(ctlpt(E2, 0.0, 0.0),

ctlpt(E2, 1.0, 0.0),

ctlpt(E2, 1.0, 1.0)));

gipfeli = sweepsrf(gipfeli_schnitt, gipfeli_achse, gipfeli_dicke);


Alle meine IRIT Dateien und die entsprechenden GIF-Bilder könnt Ihr unter nachfolgender URL betrachten und kopieren:

http://www.siebenthal.ch/