<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.freitagsrunde.org/index.php?action=history&amp;feed=atom&amp;title=C-Kurs%2FDreiD%2FMusterl%C3%B6sung</id>
	<title>C-Kurs/DreiD/Musterlösung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.freitagsrunde.org/index.php?action=history&amp;feed=atom&amp;title=C-Kurs%2FDreiD%2FMusterl%C3%B6sung"/>
	<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/DreiD/Musterl%C3%B6sung&amp;action=history"/>
	<updated>2026-04-25T09:00:46Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in FreitagsrundenWiki</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/DreiD/Musterl%C3%B6sung&amp;diff=20403&amp;oldid=prev</id>
		<title>PaulG: verschob „Ckurs/DreiD/Musterlösung“ nach „C-Kurs/DreiD/Musterlösung“</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/DreiD/Musterl%C3%B6sung&amp;diff=20403&amp;oldid=prev"/>
		<updated>2013-03-05T17:37:14Z</updated>

		<summary type="html">&lt;p&gt;verschob „&lt;a href=&quot;/Ckurs/DreiD/Musterl%C3%B6sung&quot; class=&quot;mw-redirect&quot; title=&quot;Ckurs/DreiD/Musterlösung&quot;&gt;Ckurs/DreiD/Musterlösung&lt;/a&gt;“ nach „&lt;a href=&quot;/C-Kurs/DreiD/Musterl%C3%B6sung&quot; title=&quot;C-Kurs/DreiD/Musterlösung&quot;&gt;C-Kurs/DreiD/Musterlösung&lt;/a&gt;“&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Version vom 5. März 2013, 17:37 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;de&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(kein Unterschied)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>PaulG</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/DreiD/Musterl%C3%B6sung&amp;diff=19095&amp;oldid=prev</id>
		<title>Nighoo: verschob „Ckurs/DreiD/Musterloesung“ nach „Ckurs/DreiD/Musterlösung“</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/DreiD/Musterl%C3%B6sung&amp;diff=19095&amp;oldid=prev"/>
		<updated>2012-09-13T14:59:05Z</updated>

		<summary type="html">&lt;p&gt;verschob „&lt;a href=&quot;/Ckurs/DreiD/Musterloesung&quot; class=&quot;mw-redirect&quot; title=&quot;Ckurs/DreiD/Musterloesung&quot;&gt;Ckurs/DreiD/Musterloesung&lt;/a&gt;“ nach „&lt;a href=&quot;/Ckurs/DreiD/Musterl%C3%B6sung&quot; class=&quot;mw-redirect&quot; title=&quot;Ckurs/DreiD/Musterlösung&quot;&gt;Ckurs/DreiD/Musterlösung&lt;/a&gt;“&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Version vom 13. September 2012, 14:59 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;de&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(kein Unterschied)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Nighoo</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/DreiD/Musterl%C3%B6sung&amp;diff=14929&amp;oldid=prev</id>
		<title>AndyF am 17. September 2010 um 09:50 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/DreiD/Musterl%C3%B6sung&amp;diff=14929&amp;oldid=prev"/>
		<updated>2010-09-17T09:50:11Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.freitagsrunde.org/index.php?title=C-Kurs/DreiD/Musterl%C3%B6sung&amp;amp;diff=14929&amp;amp;oldid=14928&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>AndyF</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=C-Kurs/DreiD/Musterl%C3%B6sung&amp;diff=14928&amp;oldid=prev</id>
		<title>AndyF am 17. September 2010 um 09:47 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=C-Kurs/DreiD/Musterl%C3%B6sung&amp;diff=14928&amp;oldid=prev"/>
		<updated>2010-09-17T09:47:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;math.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;screen.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Rotationsgeschwindigkeiten (frei wählbar) */&lt;br /&gt;
&lt;br /&gt;
#define ROT_V_ALPHA 0.1f&lt;br /&gt;
&lt;br /&gt;
#define ROT_V_BETA 0.03f&lt;br /&gt;
&lt;br /&gt;
#define LIGHT_V_ALPHA 0.0f&lt;br /&gt;
&lt;br /&gt;
#define LIGHT_V_BETA 0.0f&lt;br /&gt;
/* Drahtgitter-Modus: 1=an, 0=aus */&lt;br /&gt;
#define WIREFRAMES_MODE 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* 3x3-Matrix-Repräsentation als 2-dimensionales Array */&lt;br /&gt;
&lt;br /&gt;
typedef float Matrix[3][3];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Aktuelle Transformation */&lt;br /&gt;
&lt;br /&gt;
Matrix transform;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Aktuelle Zeichenfarbe mit Werten zwischen 0 und 1 */&lt;br /&gt;
&lt;br /&gt;
float color_r;&lt;br /&gt;
&lt;br /&gt;
float color_g;&lt;br /&gt;
&lt;br /&gt;
float color_b;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Aktueller Lichtvektor */&lt;br /&gt;
&lt;br /&gt;
float lgt_x;&lt;br /&gt;
&lt;br /&gt;
float lgt_y;&lt;br /&gt;
&lt;br /&gt;
float lgt_z;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* --- Prototypen --- */&lt;br /&gt;
&lt;br /&gt;
/* Gibt eine 3x3-Matrix aus und beendet das Programm */&lt;br /&gt;
void print_matrix(Matrix matrix);&lt;br /&gt;
/* Gibt einen Vektor, bestehend aus 3 floats, aus und beendet das Programm */&lt;br /&gt;
&lt;br /&gt;
void print_vector(float x, float y, float z);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
Bildet aus zwei Winkeln die resultierende Transformationsmatrix&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
void refresh_transformation_matrix(float alpha, float beta)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     /* Rotationsmatrizen */&lt;br /&gt;
&lt;br /&gt;
     Matrix rot_x = {&lt;br /&gt;
&lt;br /&gt;
                     {     1.0f    ,    0.0f    ,    0.0f    },&lt;br /&gt;
&lt;br /&gt;
                     {     0.0f    ,  cos(beta) , -sin(beta) },&lt;br /&gt;
&lt;br /&gt;
                     {     0.0f    ,  sin(beta) ,  cos(beta) }&lt;br /&gt;
&lt;br /&gt;
                    };&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
     //... (rot_y)&lt;br /&gt;
                    &lt;br /&gt;
     /* Matrix-Multiplikation */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     //...&lt;br /&gt;
     &lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
Rotiert den gegebenen Vektor, bestehend aus 3 Floats, entsprechend der aktuellen transform-Matrix&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
void apply_transform(float * x,float * y,float * z)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    float h_x = *x;&lt;br /&gt;
    float h_y = *y;&lt;br /&gt;
    float h_z = *z;&lt;br /&gt;
    /* Transformation anwenden */&lt;br /&gt;
&lt;br /&gt;
    *x = h_x;&lt;br /&gt;
&lt;br /&gt;
    *y = h_y;&lt;br /&gt;
&lt;br /&gt;
    *z = h_z;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
Zeichnet ein dreidimensionales Dreieck auf die zweidimensionale Fläche entsprechend der aktuellen transform-Matrix&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
void render_primitive(float x1,float y1,float z1, float x2,float y2,float z2, float x3,float y3,float z3)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    /* Koordinaten transformieren */&lt;br /&gt;
&lt;br /&gt;
    apply_transform(&amp;amp;x1,&amp;amp;y1,&amp;amp;z1);&lt;br /&gt;
&lt;br /&gt;
    apply_transform(&amp;amp;x2,&amp;amp;y2,&amp;amp;z2);&lt;br /&gt;
&lt;br /&gt;
    apply_transform(&amp;amp;x3,&amp;amp;y3,&amp;amp;z3);&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    /* Culling */&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    //...&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
    /* Dreiecke zeichnen */&lt;br /&gt;
&lt;br /&gt;
    set_color(color_r, color_g, color_b);    &lt;br /&gt;
    if(WIREFRAMES_MODE)&lt;br /&gt;
    {&lt;br /&gt;
        draw_line(x1,y1, x2,y2);&lt;br /&gt;
        draw_line(x2,y2, x3,y3);&lt;br /&gt;
        draw_line(x3,y3, x1,y1);&lt;br /&gt;
    }else&lt;br /&gt;
&lt;br /&gt;
        draw_triangle(x1,y1, x2,y2, x3,y3);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ----------------Ab hier alles Vorlage---------------- */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Aktuelle Rotationen */&lt;br /&gt;
&lt;br /&gt;
float trf_alpha = 0;&lt;br /&gt;
&lt;br /&gt;
float trf_beta = 0;&lt;br /&gt;
&lt;br /&gt;
float lgt_alpha = 0;&lt;br /&gt;
&lt;br /&gt;
float lgt_beta = 0;&lt;br /&gt;
/* Anzahl der bisher gezeichneten Frames */&lt;br /&gt;
int c_time = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
Gibt eine 3x3-Matrix aus und beendet das Programm&lt;br /&gt;
*/&lt;br /&gt;
void print_matrix(Matrix matrix)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
     printf(&amp;quot;%f  %f  %f\n&amp;quot;,matrix[0][0],matrix[0][1],matrix[0][2]);&lt;br /&gt;
&lt;br /&gt;
     printf(&amp;quot;%f  %f  %f\n&amp;quot;,matrix[1][0],matrix[1][1],matrix[1][2]);&lt;br /&gt;
&lt;br /&gt;
     printf(&amp;quot;%f  %f  %f\n&amp;quot;,matrix[2][0],matrix[2][1],matrix[2][2]);&lt;br /&gt;
&lt;br /&gt;
     system(&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
     exit(EXIT_SUCCESS);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
Gibt einen Vektor, bestehend aus 3 floats, aus und beendet das Programm&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
void print_vector(float x, float y, float z)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
     printf(&amp;quot;%f  %f  %f\n&amp;quot;,x,y,z);&lt;br /&gt;
&lt;br /&gt;
     system(&amp;quot;PAUSE&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
     exit(EXIT_SUCCESS);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
Setzt die aktuelle Farbe für nachfolgende render_* Aufrufe&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
void refresh_color(float r,float g, float b)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
     color_r = r;&lt;br /&gt;
&lt;br /&gt;
     color_g = g;&lt;br /&gt;
&lt;br /&gt;
     color_b = b;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
Rendert dreidimensionale viereckige Fläche (bestehend aus zwei Dreiecken) &lt;br /&gt;
*/&lt;br /&gt;
void render_face(float x1,float y1,float z1, float x2,float y2,float z2, float x3,float y3,float z3, float x4,float y4,float z4)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    render_primitive(x1,y1,z1,x2,y2,z2,x3,y3,z3);&lt;br /&gt;
&lt;br /&gt;
    render_primitive(x1,y1,z1,x3,y3,z3,x4,y4,z4);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
Komplette Ausgabe&lt;br /&gt;
*/&lt;br /&gt;
void output()&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    /* Transformation aktualisieren */&lt;br /&gt;
&lt;br /&gt;
    refresh_transformation_matrix(trf_alpha,trf_beta);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /* Licht-Vektor setzen */&lt;br /&gt;
&lt;br /&gt;
    lgt_x = cos(lgt_beta);&lt;br /&gt;
&lt;br /&gt;
    lgt_y = sin(lgt_beta);&lt;br /&gt;
&lt;br /&gt;
    lgt_z = sin(lgt_alpha)*lgt_x;   &lt;br /&gt;
    lgt_x = cos(lgt_alpha)*lgt_x;&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
    /* Szene rendern */ &lt;br /&gt;
&lt;br /&gt;
    begin_scene();&lt;br /&gt;
&lt;br /&gt;
    refresh_color(1,0,0);&lt;br /&gt;
&lt;br /&gt;
    render_face(-1,-1,1, 1,-1,1, 1,1,1, -1,1,1); //Front&lt;br /&gt;
    render_face(1,-1,-1, -1,-1,-1, -1,1,-1, 1,1,-1); //Back&lt;br /&gt;
    refresh_color(1,1,0);&lt;br /&gt;
&lt;br /&gt;
    render_face(-1,-1,1, -1,1,1, -1,1,-1, -1,-1,-1); //Left&lt;br /&gt;
&lt;br /&gt;
    render_face(1,1,1, 1,-1,1, 1,-1,-1, 1,1,-1); //Right&lt;br /&gt;
&lt;br /&gt;
    refresh_color(1,0.5,0);&lt;br /&gt;
&lt;br /&gt;
    render_face(1,-1,1, -1,-1,1, -1,-1,-1, 1,-1,-1); //Top&lt;br /&gt;
    render_face(-1,1,1, 1,1,1, 1,1,-1, -1,1,-1); //Bottom &lt;br /&gt;
&lt;br /&gt;
    end_scene();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    /* Fenster initialisieren */&lt;br /&gt;
&lt;br /&gt;
    if(create_window(400,400,0x220000) != 0){&lt;br /&gt;
&lt;br /&gt;
        printf(&amp;quot;Fehler beim Fenster Erstellen. Bitte wende dich an einen Tutor.\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        return EXIT_FAILURE;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /* Startwerte setzen */&lt;br /&gt;
    zoom = 0.5;&lt;br /&gt;
&lt;br /&gt;
    trf_alpha = M_PI/2;&lt;br /&gt;
&lt;br /&gt;
    trf_beta = M_PI/3;&lt;br /&gt;
&lt;br /&gt;
    lgt_alpha = M_PI*2/3;&lt;br /&gt;
&lt;br /&gt;
    lgt_beta = -M_PI/4;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /* Figur wiederholt rendern */&lt;br /&gt;
&lt;br /&gt;
    while(1)&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
        trf_alpha += ROT_V_ALPHA;&lt;br /&gt;
&lt;br /&gt;
        trf_beta += ROT_V_BETA;&lt;br /&gt;
        lgt_alpha += LIGHT_V_ALPHA;&lt;br /&gt;
&lt;br /&gt;
        lgt_beta += LIGHT_V_BETA;&lt;br /&gt;
&lt;br /&gt;
    	output();&lt;br /&gt;
    	c_time++;&lt;br /&gt;
&lt;br /&gt;
    	usleep(50000);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /* Programmende */    &lt;br /&gt;
&lt;br /&gt;
    close_window();&lt;br /&gt;
&lt;br /&gt;
    return EXIT_SUCCESS;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AndyF</name></author>
		
	</entry>
</feed>