Prof. Dr. Tobias Breiner
|
|
- Frieder Hummel
- vor 6 Jahren
- Abrufe
Transkript
1
2 Eigene Geometrien Inhalt Grundlagen Dreieckslisten Dreiecksstreifen Dreieckstabellen Importer von 67
3 Grundlagen von 67
4 Grundlagen Modellierung in der virtuellen Welt (0D => D) Punktmodelle (D => D) Linienmodelle (D => D) Flächenmodelle (D => D) Volumenmodelle Fh Kempten von 67
5 Eigene Geometrien Grundlagen Flächenmodelle Flächenmodelle Flächenmodelle beschreiben die Oberflächen der virtuellen Objekte durch Vielecke (Polygone). Das Innenleben des virtuellen Objektes bleibt dagegen undefiniert. Das funktioniert so lange, wie die Kamera das Objekt nur von außen betrachtet und das Objekt intakt bleibt. von 67
6 Eigene Geometrien Grundlagen Flächenmodelle Flächenmodelle Durch die Berechnung der Interaktion zwischen Licht und Material auf der Oberfläche (Shading) entsteht eine Optische Simulation des Objektes. Da das Innenleben nicht mitberechnet wird, sind Flächenmodelle performant bei gleichzeitiger hoher visueller Qualität. Fast alle gängigen D-Werkzeuge basieren daher vornehmlich auf polygonalen Flächenmodellen. 6 von 67
7 Eigene Geometrien Grundlagen Flächenmodelle Definition Polygon Ein Polygon wird mathematisch durch eine einfache und geschlossene Folge von Kanten (Edges) in einer Ebene beschrieben, die durch je zwei Punkte definiert werden: {(p 0,p )... (p n-,p n- )} p p 0 =p 6 p p p p Fh Kempten 7 von 67
8 Eigene Geometrien Grundlagen Flächenmodelle Vorteil der Dreiecke I Ein Polygon kann beliebig viele Eckpunkte beinhalten. In Vektoria (und den meisten anderen D- Systemen) sind allerdings nur Dreiecke als Polygone erlaubt. Werden Vierecke, Fünfecke, Sechsecke, etc. benötigt, müssen diese durch mehrere Dreiecke ersetzt werden. Das ganz obige Polygon könnte man z.b. folgendermaßen aufteilen. 8 von 67
9 Eigene Geometrien Grundlagen Flächenmodelle Vorteil der Dreiecke II Indem die meisten D-Systeme sich auf Dreiecke als Polygone beschränken, wird eine Menge Ärger vermieden: Insbesonde mit Offenheit, Kreuzvernetzungen und Polygonunebenheiten durch Eckpunkte, die nicht in einer Ebene liegen. 9 von 67
10 Eigene Geometrien Grundlagen Flächenmodelle Facetten und Vertices Die von einem Polygon eingeschlossene Fläche wird als Facette (engl. Face) bezeichnet und die mit Zusatzinformationen versehenen Eckpunkte eines Polygons werden in der Computergrafik Vertices genannt (Singular: Vertex). 0 von 67
11 Eigene Geometrien Grundlagen Flächenmodelle Zusatzinformationen von Vertices Die Zusatzinformationen eines Vertex, neben seiner D-Position im Raum, unterscheiden sich von Engine zu Engine. In Vektoria sind diese konkret: - Oberflächennormale (für das Shading wichtig) - Tangente (für das POM- und Dot-Bumpmapping wichtig) - Bitangente (für das POM- und Dot-Bumpmapping wichtig) - UV-Koordinaten (geben die Position der Textur am Vertex an) (u,v) von 67
12 Eigene Geometrien Grundlagen Flächenmodelle CVertex::Init void Init ( CHVector vpos, CHVector vnormal, CHVector vtangent, CHVector vbitangent, float fu=0, float fv=0, ); Normalerweise muss die Bitangente nicht angegeben werden, sie errechnet sich mittels der Vertexnormalen und der Vertextangenten mittels dem Kreuzprodukt. In seltenen Fällen ist die Bitangente aber nicht rechtshändig orthogonal. Dann muss sie explizit mit angegeben werden. von 67
13 Eigene Geometrien Grundlagen Flächenmodelle Drehrichtung der Facetten Es ist wichtig, dass die Vertices in einem rechtshändigen System auch rechtsdrehend vernetzt sind (mathematisch positive Rotation, wenn man das Objekt von Außen betrachtet) v v v 0 v und nicht linksdrehend, sonst zeigt die Flächennormale der Facette nach innen. v v 0 von 67
14 Eigene Geometrien Grundlagen Flächenmodelle Polygonnetze Normalerweise wird eine Oberfläche nicht durch einzelne isolierte Polygone definiert, sondern durch Polygonnetze. Hier können sich verschiedene Facetten ein- und denselben Vertex teilen. V In diesem Beispiel teilen sich die Facetten F, F, F und F den Vertex V. V6 V6 Diese Vertexredundanzen lassen sich zur Renderbeschleunigung und zur Speicherplatzreduzierung ausnutzen. F V F V0 F V F F F0 F0 F F F6 V V von 67
15 Eigene Geometrien Grundlagen Flächenmodelle Streifen (Strips) Die Vertexredundanzen kann man u.a. durch Streifen bzw. engl. Strips vermeiden. Hier wird das Polygonnetz implizit durch die Reihenfolge der Vertices definiert. Bei Dreiecksstreifen (Triangle Strips) definieren immer drei aufeinanderfolgende Vertices eine neue Facette. V0,V,V => F V,V,V => F V,V,V => F V,V,V => F V0 V F V F F V V F V von 67
16 Eigene Geometrien Grundlagen Flächenmodelle Fans Die Vertexredundanzen können bei speziellen Geometrien auch durch Fans eliminiert werden. Fans beschreiben eine Menge von Polygonen, die sich einen zentralen Vertex teilen. Bei Triangle Fans gibt der erste Vertex den Zentralvertex an, die nachfolgenden Vertices die restlichen Vertices der adjazenten Facetten. In diesem Beispiel teilen sich die Facetten F0 bis F den zentralen Vertex V0. Die Anwendungsgebiete von Fans sind sehr eng begrenzt, die Performanzvorteile marginal und die Struktur so inflexibel, dass Fans in modernen D-Systemen für gewöhnlich nicht mehr angeboten werden, z.b. werden sie ab DirectX 0, OpenGL.0, Vektoria V, etc. nicht mehr unterstützt. F F V F0 F F V0 F 6 von 67
17 Eigene Geometrien Grundlagen Tabellen (Indexed Face Sets) Spezielle Tabellen, auch Indexed Face Sets genannt, sind die flexibelste und meist genutzte Möglichkeit zur Vermeidung von Vertexredundanzen. Hier wird jeder Vertex einmal in einer Vertextabelle aufgelistet und mit einer Facettentabelle beliebig oft referenziert. Vertextabelle Facettentabelle V0 V X Y Z V A V B V C V F0 F V F F V F0 V V V.0.. V V V V F0 0 F F F 7 von 67
18 Eigene Geometrien Grundlagen Flächenmodelle Erzeugung polygonaler Geometrien Neben den parametrisierten Erzeugung von geometrischen Primitiven (Kugel, Quader, Tetraeder, Quad, ) gibt es die Möglichkeit, eigene geometrische Flächenmodelle zu erstellen. Die Möglichkeit zur Erzeugung eigener Geometrien bieten nicht alle Szenegrafen bzw. Game- oder D-Engines. In Vektoria gibt es mehere Möglichkeiten zur Erzeugung eigener polygonaler Geometrien, u.a.: Dreieckslisten per CGeoTriangleList, Dreiecksstreifen per CGeoTriangleStrip, Dreieckstabellen per CGeoTriangleTable 8 von 67
19 Eigene Geometrien Grundlagen Flächenmodelle Flächenmodellklassen in Vektoria kann sein Triangle Lists CGeoTriangleList Geometrie CGeo kann sein Triangle Table CGeoTriangleTable Triangle Strip CGeoTriangleStrip Besteht aus einzelnen Dreieckspolygonen => für unzusammenhängende oder kantige Strukturen mit wenigen Polygonen geeignet Besteht aus einer Serie von Vertices, die ein Dreieckspolygonnetz definieren. => Für runde, zusammenhängende Strukturen geeignet. Besteht aus Vertexund Indextabelle (Indexed Face Set). => meist beste Wahl (vermeidet Vertexredundanzen) 9 von 67
20 Kapitel Kapitel Dreieckslisten 0 von 67
21 Eigene Geometrien Dreieckslisten kann sein Triangle Lists CGeoTriangleList Geometrie CGeo Triangle Strip CGeoTriangleStrip kann sein Triangle Table CGeoTriangleTable Besteht aus einzelnen Dreieckspolygonen => für unzusammenhängende oder kantige Strukturen mit wenigen Polygonen geeignet Besteht aus einer Serie von Vertices, die ein Dreieckspolygonnetz definieren. => Für runde, zusammenhängende Strukturen geeignet. Besteht aus Vertexund Indextabelle (Indexed Face Set). => meist beste Wahl (vermeidet Vertexredundanzen) von 67
22 Dreieckslisten Triangle Lists Pro und Cons Vorteile: Einfacher als Triangle Strips und Triangle Tables. Auch für kantige und/oder unzusammenhängende Geometrien verwendbar. Nachteile: Etwas Langsamer als Triangle Strips und Triangle Tables, da redundante Vertices mehrfach aufgelistet werden. Im Folgenden ein Beispiel, wie man mit Hilfe von Triangle Lists einen Einheitswürfel erzeugen kann. von 67
23 Dreieckslisten Allgemeines Vorgehen bei Triangle Lists Vertices erzeugen CVertex::Init( ) Vertices zu Polygonen vernetzen CGeoTriangleList::AddVertex( ) Dreiecksliste initialisieren CGeoTriangleList::Init(); Die initialisierte Triangle List kann man wie eine normale Geometrie verwenden. von 67
24 Dreieckslisten - Einheitswürfel mit Triangle Lists Benötigte Variablen im Header class CGeoUnitCube : public CGeoTriangleList { public: // In den Konstruktor wird alles reingeschrieben: CGeoUnitCube(void); // der Destruktor kann erst einmal leer bleiben: ~CGeoUnitCube(void); }; // Pro Würfelseite brauche ich Vertices. // Ein Würfel hat 6 Seiten. // Also brauche ich * 6 = Vertices // (Acht Vertices miteinander zu teilen ist keine // gute Idee, da die Normalen, Tangenten und // Bitangenten pro Seite anders sind): CVertex m_avertex[]; von 67
25 Dreieckslisten - Einheitswürfel mit Triangle Lists Benötigte Variablen im Header CGeoUnitCube :: CGeoUnitCube(void) { } // // Hier in den Konstruktorkörper kommt der Code der folgenden Seiten rein. Damit wird der Einheiswürfel gleich am Anfang mit den richtigen Vertices und Polygonen aufgebaut. CGeoUnitCube :: ~CGeoUnitCube(void) { } Der Destruktor kann erst einmal leer bleiben von 67
26 Dreieckslisten - Einheitswürfel mit Triangle Lists Nummerierung der Vorderseite y v z v 0 x v v 6 von 67
27 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der Vorderseite // Zuerst muss die Seite Z Plus gebaut werden: m_avertex[0].init( // Vertex 0 von Seite Z+: CHVector(+.0f,+.0f,+.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente 0.0f,.0f); // UV-Koordinaten m_avertex[].init( // Vertex von Seite Z+: CHVector(-.0f,+.0f,+.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente.0f,.0f); // UV-Koordinaten m_avertex[].init( // Vertex von Seite Z+: CHVector(+.0f,-.0f,+.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente 0.0f, 0.0f); // UV-Koordinaten 7 von 67
28 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der Vorderseite m_avertex[].init( // Vertex von Seite Z+: CHVector(-.0f,-.0f,+.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente.0f, 0.0f); // UV-Koordinaten // Jetzt haben wir die Vertices der Vorderseite // definiert, wir müssen noch die Vertices // zu Dreieckspolygonen vernetzen: //. Dreieck auf der Z+-Seite: AddVertex(&m_avertex[0]); AddVertex(&m_avertex[]); AddVertex(&m_avertex[]); //. Dreieck auf der Z+-Seite: AddVertex(&m_avertex[]); AddVertex(&m_avertex[]); AddVertex(&m_avertex[]); Auf rechtshändige Drehrichtung achten! Auf rechtshändige Drehrichtung achten! 8 von 67
29 Dreieckslisten - Einheitswürfel mit Triangle Lists Nummerierung der Rückseite y v v z x v 7 v6 9 von 67
30 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der Rückseite // Dann muss die Seite Z Minus gebaut werden: m_avertex[].init( // Vertex von Seite Z-: CHVector(+.0f,+.0f,-.0f), // Position CHVector( 0.0f, 0.0f,-.0f), // Normale CHVector(.0f, 0.0f, 0.0f), // Tangente 0.0f,.0f); // UV-Koordinaten m_avertex[].init( // Vertex von Seite Z-: CHVector(-.0f,+.0f,-.0f), // Position CHVector( 0.0f, 0.0f,-.0f), // Normale CHVector(.0f, 0.0f, 0.0f), // Tangente.0f,.0f); // UV-Koordinaten m_avertex[6].init( // Vertex 6 von Seite Z-: CHVector(+.0f,-.0f,-.0f), // Position CHVector( 0.0f, 0.0f,-.0f), // Normale CHVector(.0f, 0.0f, 0.0f), // Tangente 0.0f, 0.0f); // UV-Koordinaten 0 von 67
31 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der Rückseite m_avertex[7].init( // Vertex 7 von Seite Z -: CHVector(-.0f,-.0f,-.0f), // Position CHVector( 0.0f, 0.0f,-.0f), // Normale CHVector(.0f, 0.0f, 0.0f), // Tangente.0f, 0.0f); // UV-Koordinaten // Jetzt haben wir die Vertices der Hinterseite // definiert, wir müssen nun noch die Vertices zu // Dreieckspolygonen vernetzen: //. Dreieck auf der Z Minus-Seite: AddVertex(&m_avertex[]); AddVertex(&m_avertex[6]); AddVertex(&m_avertex[]); //. Dreieck auf der Z Minus-Seite: AddVertex(&m_avertex[]); AddVertex(&m_avertex[6]); AddVertex(&m_avertex[7]); Auf rechtshändige Drehrichtung achten! Auf rechtshändige Drehrichtung achten! von 67
32 Dreieckslisten - Einheitswürfel mit Triangle Lists Nummerierung auf der rechten Seite y v 9 z v 8 v 0 v x von 67
33 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der rechten Seite // Seite X Plus: m_avertex[8].init( // Vertex 8 von Seite X+: CHVector(+.0f,+.0f,+.0f), // Position CHVector(.0f, 0.0f, 0.0f), // Normale CHVector( 0.0f,.0f, 0.0f), // Tangente.0f, 0.0f); // UV-Koordinaten m_avertex[9].init( // Vertex 9 von Seite X+: CHVector(+.0f,+.0f,-.0f), // Position CHVector(.0f, 0.0f, 0.0f), // Normale CHVector(0.0f,.0f, 0.0f), // Tangente.0f,.0f); // UV-Koordinaten m_avertex[0].init( // Vertex 0 von Seite X+: CHVector(+.0f,-.0f,+.0f), // Position CHVector(.0f, 0.0f, 0.0f), // Normale CHVector( 0.0f,.0f, 0.0f), // Tangente 0.0f, 0.0f); // UV-Koordinaten von 67
34 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der rechten Seite m_avertex[].init( // Vertex von Seite X+: CHVector(+.0f,-.0f,-.0f), // Position CHVector(.0f, 0.0f, 0.0f), // Normale CHVector( 0.0f,.0f, 0.0f), // Tangente 0.0f,.0f); // UV-Koordinaten // Jetzt haben wir die Vertices der rechten Seite // definiert, wir müssen nun noch die Vertices zu // Dreieckspolygonen vernetzen: //. Dreieck auf der X Plus-Seite: AddVertex(&m_avertex[8]); AddVertex(&m_avertex[0]); AddVertex(&m_avertex[9]); //. Dreieck auf der X Plus-Seite: AddVertex(&m_avertex[9]); AddVertex(&m_avertex[0]); AddVertex(&m_avertex[]); von 67
35 Dreieckslisten - Einheitswürfel mit Triangle Lists Nummerierung auf der linken Seite v y v z v v x von 67
36 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der linken Seite // Seite X Minus: m_avertex[].init ( // Vertex von Seite X-: CHVector(-.0f,+.0f,+.0f), // Position CHVector(-.0f, 0.0f, 0.0f), // Normale CHVector( 0.0f,.0f, 0.0f), // Tangente.0f,.0f); // UV-Koordinaten m_avertex[].init ( // Vertex von Seite X-: CHVector(-.0f,+.0f,-.0f), // Position CHVector(-.0f, 0.0f, 0.0f), // Normale CHVector( 0.0f,.0f, 0.0f), // Tangente.0f,0.0f); // UV-Koordinaten m_avertex[].init( // Vertex von Seite X-: CHVector(-.0f,-.0f,+.0f), // Position CHVector(-.0f, 0.0f, 0.0f), // Normale CHVector( 0.0f,.0f, 0.0f), // Tangente 0.0f,.0f); // UV-Koordinaten 6 von 67
37 Dreieckslisten - Einheitswürfel mit Triangle Lists Aufbau der linken Seite m_avertex[].init( // Vertex von Seite X-: CHVector(-.0f,-.0f,-.0f), // Position CHVector(-.0f, 0.0f, 0.0f), // Normale CHVector( 0.0f,.0f, 0.0f), // Tangente 0.0f, 0.0f); // UV-Koordinaten // Jetzt haben wir die Vertices der linken Seite // definiert, wir müssen nun noch die Vertices zu // Dreieckspolygonen vernetzen: //. Dreieck auf der linken Seite: AddVertex(&m_avertex[]); AddVertex(&m_avertex[]); AddVertex(&m_avertex[]); //. Dreieck auf der linken Seite: AddVertex(&m_avertex[]); AddVertex(&m_avertex[]); AddVertex(&m_avertex[]); 7 von 67
38 Dreieckslisten - Einheitswürfel mit Triangle Lists Übung: Ober- und Unterseite Das Prinzip sollte jetzt klar geworden sein, es fehlen aber noch Ober- und Unterseite. Diese Aufgabe bleibt Ihnen überlassen. y Oberseite z x 8 von 67
39 Dreieckslisten - Einheitswürfel mit Triangle Lists Initialisierung der Triangle List Nachdem Ober- und Unterseite erstellt wurden, kommt der letzte Befehl im Konstruktor. Mit CTriangleList::Init werden die Polygondaten an die Grafikkarte übergeben und damit einie eigene Geometrie erzeugt: CGeoTriangleList::Init(); Die Klasse kann nun so vertwendet werden, als wäre sie eine normale Geometrie, man inkluded sie und schreibt im Header: CGeoUnitCube m_zgunitcube; Die Variable m_zgunitcube muss natürlich noch an ein geeignetes Placement geadded werden und eventuell per SetMaterial mit einem Material versehen werden: m_zp.addgeo(&m_zgunitcube); m_zgunitcube.setmaterial(pmaterial); 9 von 67
40 Dreieckslisten - Einheitswürfel mit Triangle Lists Ausgabe Einheitswürfel 0 von 67
41 Kapitel Kapitel Dreiecksstreifen von 67
42 Dreiecksstreifen CGeoTriangleStrips kann sein Triangle Lists CGeoTriangleList Geometrie CGeo Triangle Strip CGeoTriangleStrip kann sein Triangle Table CGeoTriangleTable Besteht aus einzelnen Dreieckspolygonen => für unzusammenhängende oder kantige Strukturen mit wenigen Polygonen geeignet Besteht aus einer Serie von Vertices, die ein Dreieckspolygonnetz definieren. => Für runde, zusammenhängende Strukturen geeignet. Besteht aus Vertexund Indextabelle (Indexed Face Set). => meist beste Wahl (vermeidet Vertexredundanz) von 67
43 Dreiecksstreifen Pro und Cons von Triangle Strips Vorteile: Shader können etwas schneller mit Triangle Strips umgehen (Faustregel ca. 0% schneller) Nachteile: Komplizierter als Triangle Lists und Triangle Tables Nur schwer kantige Strukturen erzeugbar Keine unzusammenhängenden Strukturen erzeugbar von 67
44 Dreiecksstreifen Quad durch Triangle Strips Im Folgenden ein Beispiel, wie man mittels Triangle Strips ein Quad erzeugen kann. Ein Quad ist eine rechteckige Fläche im Raum, bestehend aus zwei Dreieckspolygonen von 67
45 Dreiecksstreifen Eigenen Quad mit Triangle Strips (/) // Im Header der Game-Klasse brauchen wir eine // Instanz eines Dreiecks-Strips: CGeoTriangleStrip m_zgtrianglestrip; // In der CGame::Init() erfolgt die Erzeugung der // Geometrie: // Erst die Vertices initalisieren: m_avertex[0].init( // Vertex : CHVector(-,-,0,), // Position CHVector(0,0,,0), // Normale CHVector(,0,0,0), // Tangente 0.0F, 0.0f // UV-Koordinaten ); von 67
46 Dreiecksstreifen Eigenen Quad mit Triangle Strips (/) m_avertex[].init( // Vertex : CHVector(+,-,0,), // Position CHVector(0,0,,0), // Normale CHVector(,0,0,0), // Tangente.0F, 0.0f // UV-Koordinaten ); m_avertex[].init( // Vertex : CHVector(-,+,0,), // Position CHVector(0,0,,0), // Normale CHVector(,0,0,0), // Tangente 0.0F,.0f // UV-Koordinaten ); 6 von 67
47 Dreiecksstreifen Eigenen Quad mit Triangle Strips (/) m_avertex[].init( // Vertex : CHVector(+,+,0,), // Position CHVector(0,0,,0), // Normale CHVector(,0,0,0), // Tangente.0F,.0f, // UV-Koordinaten ); // Die Vertices gehören zum Triangle Strip: for(int i=0;i<;i++) { m_zgtrianglestrip.addvertex(&m_avertex[i]); m_zgtrianglestrip.addindex(i); } 7 von 67
48 Dreiecksstreifen Eigenen Quad mit Triangle Strips (/) // Initialisiere den Triangle Strip: m_zgtrianglestrip.init(); // Mappe Material auf das Rechteck: m_zgtrianglestrip.setmaterial(&m_material); // und nun kannst Du Deinen eigenen persönlichen Triangle Strip benutzen, wie eine ganz normale Geometrie: m_placement.addgeo(& m_zgtrianglestrip); 8 von 67
49 Dreiecksstreifen Ergebnis: Eigener Quad 9 von 67
50 Dreiecksstreifen Übung Erzeugen Sie einen Pfeiler mit Hilfe von Triangle Strips! Freiwillige Zusatzaufgabe für die schnellen Nerds: Erzeugen Sie eine Prozedur, die parametrisiert dorische und ionische Pfeiler erzeugt! 0 von 67
51 Kapitel Kapitel Dreieckstabellen von 67
52 Polygonale Flächenmodelle Dreieckstabellen kann sein Triangle Lists CGeoTriangleList Geometrie CGeo Triangle Strip CGeoTriangleStrip kann sein Triangle Table CGeoTriangleTable Besteht aus einzelnen Dreieckspolygonen => für unzusammenhängende oder kantige Strukturen mit wenigen Polygonen geeignet Besteht aus einer Serie von Vertices, die ein Dreieckspolygonnetz definieren. => Für runde, zusammenhängende Strukturen geeignet. Besteht aus Vertexund Indextabelle (Indexed Face Set). => meist beste Wahl (vermeidet Vertexredundanzen) von 67
53 Dreieckstabellen Vorgehen bei CGeoTriangleTables Vertices erzeugen CVertex::Init( ) Vertex-Tabelle erzeugen CGeoTriangleTable::AddVertex( ) Facetten-Tabelle erzeugen CGeoTriangleTable::AddIndex(..) Dreieckstabelle initialisieren CGeoTriangleTable::Init(); Die initialisierte Dreieckstabelle kann man wie eine normale Geometrie verwenden. von 67
54 Dreieckstabellen Beispiel: Fünfeck in XY-Ebene V Vertextabelle Facettentabelle V0 F F V X Y Z V V V V A V B V C F0 0 F 0 F 0 V F0 V V V Wird mit AddVertex() befüllt Wird mit AddIndex() befüllt. Jeweils drei aufeinanderfolgende Aufrufe bilden eine Dreiecksbeschreibung. von 67
55 Dreieckstabellen Eigenes Fünfeck mittels CGeoTriangleTable Benötigte Variablen im Header (/) class CGeoPentagon : public CGeoTriangleTable { public: // In den Konstruktor wird alles reingeschrieben: CGeoPentagon(void); // der Destruktor kann erst einmal leer bleiben: ~CGeoPentagon(void); }; // Für ein Fünfeck brauche ich natürlich // fünf Vertices. CVertex m_avertex[]; von 67
56 Dreieckstabellen Eigenes Fünfeck mit Triangle Tables (/) // Zuerst muss die Seite Z Plus gebaut werden: m_avertex[0].init( // Vertex 0 von Seite Z+: CHVector(+0.0f,+0.8f, 0.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente 0.0f,.0f); // UV-Koordinaten m_avertex[].init( // Vertex von Seite Z+: CHVector(-0.f,+0.0f, 0.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente.0f,.0f); // UV-Koordinaten m_avertex[].init( // Vertex von Seite Z+: CHVector(+.f,-0.0f, 0.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente 0.0f, 0.0f); // UV-Koordinaten 6 von 67
57 Dreieckstabellen Eigenes Fünfeck mit Triangle Tables (/) m_avertex[].init( // Vertex von Seite Z+: CHVector(-.f,-0.8f, 0.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente.0f, 0.0f); // UV-Koordinaten m_avertex[].init( // Vertex von Seite Z+: CHVector(-0.7f,-.f, 0.0f), // Position CHVector( 0.0f, 0.0f,.0f), // Normale CHVector(-.0f, 0.0f, 0.0f), // Tangente.0f, 0.0f); // UV-Koordinaten // Jetzt haben wir die Vertices definiert und fügen sie nacheinander der Vertextabelle hinzu: for(int i = 0; i<; ++i) AddVertex(&m_avertex[i]); 7 von 67
58 Dreieckstabellen Eigenes Fünfeck mit Triangle Tables (/) // Wir erzeugen nun die Facettenliste, indem wir für jede // Facette nacheinander ihre drei Vertices per AddIndex // aufrufen: //. Dreieck F0: AddIndex(0); AddIndex(); AddIndex(); //. Dreieck F: AddIndex(0); AddIndex(); AddIndex(); //. Dreieck F: AddIndex(0); AddIndex(); AddIndex(); Auf rechtshändige Drehrichtung achten! 8 von 67
59 Dreieckstabellen Eigenes Fünfeck mit Triangle Tables (/) // Am Schluss müssen wir den Triangle Table // initialisieren: Init(); // Man kann natürlich den Triangle Table auch noch mit // einem Material versehen: SetMaterial(&m_material); // Nun kann man die Klasse CGeoPentagon verwenden, // wie eine ganz normale Gemetrie und eine // diesbezügliche Instanz per AddGeo an ein // Placement hängen. 9 von 67
60 Kapitel Kapitel Importer 60 von 67
61 Importer Wavefront-Import (OBJ-Dateien) In der Game.h: CGeo * m_pzg; CFileWavefront m_filewavefront; In der Game.cpp / Init-Methode: m_pzg = m_filewavefront.loadgeo( myfile.obj"); Blender invertiert die UV-Maps, daher müssen Sie beim Importieren den dafür extra angelegten Invertierungsflag setzen, also:.loadgeo( myfile.obj, true); Importieren Sie mit Blender oder Maya erstellte D- Geometrien am besten mit diesem Importer, das bringt die schönsten Ergebnisse! 6 von 67
62 Importer Blender-Import In der Game.h: Achtung, Nr.! Bisher ist es nur möglich, Blender Files von -Bit Blender-Versionen zu importieren! Achtung, Nr.! Es wird immer nur das allererste Mesh aus einem Blender-File importiert! CGeo * m_pzg; CFileBlender m_fileblender; In der Game.cpp / Init-Methode: m_pzg = m_fileblender.loadgeo( myfile.blend"); 6 von 67
63 Importer D Studio Max-Import In der Game.h: CGeo * m_pzg; CFileDS m_fileds; In der Game.cpp / Init-Methode: m_pzg = m_fileds.loadgeo( myfile.ds"); 6 von 67
64 Importer XD-Import Achtung, Nr.! XD-Files enthalten für gewöhnlich weder Normalenvektoren noch UV-Koordinaten! Diese Daten werden daher von Vektoria heuristisch abgeschätzt. Die meisten importierten Meshes werden daher vom Shading und von der Texturierung her etwas seltsam aussehen. Achtung, Nr.! Es wird immer nur das allererste Mesh aus einem XD-File importiert! In der Game.h: CGeo * m_pzg; CFileXD m_filexd; In der Game.cpp / Init-Methode: m_pzg = m_filexd.loadgeo( myfile.xd"); 6 von 67
65 Tipp Prozedural topp, modelliert flopp (/) Ziehen Sie möglichst eine in Vektoria prozedural erzeugte Geometrie bzw. eine vorgefertigte Vektoria- Primitivengeometrie einer importierten Geometrie vor! Die Gründe dafür sind:.) Prozedural erzeugte Geometrien sind sparsamer hinsichtlich der Vertices und genauer durchdacht..) Prozeduren können möglicherweise wiederverwendet werden..) Tangenten- und Bitangentenkoordinaten für das Bumpmapping werden in Modellierungsprogrammen oft nicht gut generiert und wenn doch, meist nicht exportiert..) Beim Importieren können Fehler auftreten Achtung! Die Form einer einmal erzeugten Geometrie kann danach nur noch schwer verändert werden! 6 von 67
66 Tipp Prozedural topp, modelliert flopp (/) Materialartefakte durch fehlende Tangenten und Bitangenten. UtahTeapot, per OBJ-Datei importiert. UtahTeapot, prozedural erzeugt. 66 von 67
67 Game Over Danke für Ihr Interesse! Copyright: ; Tobias.Breiner@D-Generation.de 67 von 67
Objektorientierte Programmierung
Unterlagen zur Veranstaltung Einführung in die Objektorientierte Programmierung Mit Processing Alexis Engelke Sommer 2012 Alexis Engelke Inhalt Level 1: Geometrie Hintergrundfarben Punkte, Linien und deren
2. Den einzelnen Objekten Material zuteilen. Die Materialien können mit Farben versehen werden (siehe 4) oder mit einer Image Textur (siehe 5).
Kurzanleitung Modellerstellung für Heli-X mit Blender 1. Schritt: Modellstruktur zeichnen (oder bestehendes Modell importieren obj = Wavefront) Dabei möglichst für verschiedene Modellteile eigene Layer
Objektorientierung: Klassen und Objekte
Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen
(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU
(7) Normal Mapping Vorlesung Computergraphik II S. Müller Dank an Stefan Rilling Einleitung Die Welt ist voller Details Viele Details treten in Form von Oberflächendetails auf S. Müller - 3 - Darstellung
Einführung in die Programmierung 1
Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener
Praktikum: Spieleengine im Eigenbau
Seite 1/17 Praktikum Spieleengine im Eigenbau Alexander Weggerle, Tobias Bäuerle 19.10.09 http://www.saschawillems.de Praktikum: Spieleengine im Eigenbau Seite 2/17 Praktikum Spieleengine im Eigenbau Alexander
Modellierungsmethoden
Modellierungsmethoden Definition (smethoden) smethoden fassen verschiedene Beschreibungsmittel, insbesondere Datenstrukturen und Operationen, für geometrische Objekte zusammen. Äquivalente Begriffe: Geometrische
Programmierkurs Java
Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen
Programmierpraktikum 3D Computer Grafik
Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Szenegraphen, Texturen und Displaylisten. Agenda Beleuchtungsmodelle in OpenGL Bump-Maps zur Erzeugung von Reliefartigen Oberflächen Height-Maps
Quader und Würfel. 1. Kreuze jene Wörter oder Bilder an, die Körper bezeichnen. Mathematische Bildung von der Schulstufe
Geometrische Körper Diagnoseblatt 5. Schulstufe Quader und Würfel 1. Kreuze jene Wörter oder Bilder an, die Körper bezeichnen Kreis Schuhschachtel Eistüte Fahrkarte Kugel Seite 1 2. Kannst du Quader und
Objektorientierung Grundlagen
Prof. Dr.-Ing. Andreas Simon Telefon +49 (0)5331 939 42630 Telefax +49 (0)5331 939 43634 E-Mail a.simon@ostfalia.de Objektorientierung Grundlagen Probeklausur 18. Mai 2015 Name: Mat.-Nr.: Vorname: Login:
Übung Datenstrukturen. Objektorientierung in C++
Übung Datenstrukturen Objektorientierung in C++ Aufgabe 1a - Farben Schreiben Sie eine Klasse COLOR zur Beschreibung von Farben. Eine Farbe werde hierbei additiv durch ihren Rot-, Grün- und Blauanteil
Kapitel 3: Variablen
Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber
3 Klassen, Attribute, Methoden
3 Klassen, Attribute, Methoden Jörn Loviscach Versionsstand: 10. April 2011, 10:25 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.j3l7h.de/videos.html
Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering
Probelektion zum Thema Shadow Rendering Shadow Maps Shadow Filtering Renderman, 2006 CityEngine 2011 Viewport Real reconstruction in Windisch, 2013 Schatten bringen viel Realismus in eine Szene Schatten
OpenGL. (Open Graphic Library)
OpenGL (Open Graphic Library) Agenda Was ist OpenGL eigentlich? Geschichte Vor- und Nachteile Arbeitsweise glscene OpenGL per Hand Debugging Trend Was ist OpenGL eigentlich? OpenGL ist eine Spezifikation
Jörn Loviscach Hochschule Bremen
Programmierbare Hardware-Shader Jörn Loviscach Hochschule Bremen Überblick Vertex- und Pixel-Shader Anwendungsbeispiele fx-dateien Anwendungsbeispiele Zusammenfassung Puffer Vertex- und Pixel-Shader Hardware-Renderpipeline
Spamschutz bei TYPO3. von Bernd Warken bei Fa. Netcos AG
Spamschutz bei TYPO3 von Bernd Warken bei Fa. Netcos AG Kapitel 0: Einleitung 3 0.1 Vorwort 3 0.2 Lizenz 3 Kapitel 1: Aktivierung und Konfiguration 4 1.1 config.spamprotectemailaddresses 4 1.2 config.spamprotectemailaddresses_atsubst
1. Das Koordinatensystem
Liebe Schülerin! Lieber Schüler! In den folgenden Unterrichtseinheiten wirst du die Unterrichtssoftware GeoGebra kennen lernen. Mit ihrer Hilfe kannst du verschiedenste mathematische Objekte zeichnen und
Jeder Flächentyp erfordert seine eigenen Modellierungstechniken, die als Set zu diesen Typen gruppiert sind.
Modellierung mittels Maya-Software Es werden dafür drei verschiedene Modellflächentypen (modeling surfaces) verwendet : 1. Polygone 2. NURBS verallgemeinerte B-Splines 3. Subdivision surfaces (unterteilte
Java Vererbung. Inhalt
Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter
Überblick Echtzeit-Rendering. Uwe Domaratius dou@hrz.tu-chemnitz.de
Überblick Echtzeit-Rendering Uwe Domaratius dou@hrz.tu-chemnitz.de Gliederung 1. Einleitung 2. geometriebasierende Verbesserungen 3. Level-of-Detail 4. Culling 5. Texturen 6. bildbasiertes Rendering Was
Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11
Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen
Repetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
Klassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
Java 3D. Linien, Flächen und Objekte Axel Bartsch, Okt. 2002
Java 3D Linien, Flächen und Objekte Axel Bartsch, Okt. 2002 Virtual World Koordinaten System Grundlagen zur Definition visueller Objekte Shape3D Unterklasse der Leaf-Klasse Eigenschaften des visuellen
Aufbau von Klassen. class punkt {...
Einführung in C++ Aufbau von Klassen Eine wird mit dem Schlüsselwort class eingeleitet, und endet mit einem Semikolon. Der Inhalt wird zwischen geschweiften Klammern geschrieben. class punkt {... ; Im
2.4A. Reguläre Polyeder (Platonische Körper)
.A. Reguläre Polyeder (Platonische Körper) Wie schon in der Antike bekannt war, gibt es genau fünf konvexe reguläre Polyeder, d.h. solche, die von lauter kongruenten regelmäßigen Vielecken begrenzt sind:
3D-Druckformate und COLLADA
Historisch-Kulturwissenschaftliche Informationsverarbeitung AM 1 Hauptseminar: Re-usable Content in 3D und Simulationssystemen Dozent: Prof. Dr. Manfred Thaller SS 2015 Robert Lee Phillips 16.07.2015 3D-Druckformate
Einstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Felder, mehrdimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Überblick: mehrdimensionale Felder 2 Vereinbarung
Universität Osnabrück Fachbereich Mathematik / Informatik. 5. Vorlesung ( )
Universität Osnabrück Fachbereich Mathematik / Informatik 5. Vorlesung (06.05.2013) Prof. Dr. rer. nat. Oliver Vornberger Nico Marniok, B. Sc. Erik Wittkorn, B. Sc. Game Application Layer Rückblick Game
Java basierte Browser Plug-ins. Martin Kreis 3D-Graphik im Web WS 02/03. 27.01.2003 Java basierte Browser Plug-ins 1. Übersicht
Java basierte Browser Plug-ins Martin Kreis 3D-Graphik im Web WS 02/03 27.01.2003 Java basierte Browser Plug-ins 1 Übersicht Plug-ins 2D/3D Präsentationen und Animationen im Web Shout3D 3DAnywhere Anfy/Anfy3D
3D Programmierpraktikum: Einführung in C++ - Teil 2
3D Programmierpraktikum: Einführung in C++ - Teil 2 Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 4. Mai 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum
Einstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern
Objektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte
Beispiel des Zusammenführens der APV- Tabellen Stammdaten und Verlaufsdaten mithilfe von Access
Beispiel des Zusammenführens der APV- Tabellen Stammdaten und Verlaufsdaten mithilfe von Access Diese Übersicht stellt die Zusammenführung der APV Tabellen Stammdaten und Verlaufdaten mithilfe der Datenbank
Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit. Direct 3D-Output für ein Rendering Framework
Zwischenvortrag zum Entwicklungsstand der Bachelor-Arbeit Direct 3D-Output für ein Rendering Framework von Benjamin Betting unter der Betreuung von Daniel Schiffner 1 Gliederung Kapitel I und II: Motivation,Einführung,Grundlagen
C A R L V O N O S S I E T Z K Y. Wavefront OBJ Format. Johannes Diemke. Übung im Modul OpenGL mit Java Wintersemester 2010/2011
C A R L V O N O S S I E T Z K Y Wavefront OBJ Format Johannes Diemke Übung im Modul OpenGL mit Java Wintersemester 2010/2011 Motivation 3D-Modelle bestehen i. d. R. aus Tausenden von Dreiecken Händische
Java Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
GeoGebra Quickstart. Eine Kurzanleitung für GeoGebra 3.0
GeoGebra Quickstart Eine Kurzanleitung für GeoGebra 3.0 Dynamische Geometrie, Algebra und Analysis ergeben GeoGebra, eine mehrfach preisgekrönte Unterrichtssoftware, die Geometrie und Algebra als gleichwertige
Objektorientierte Programmierung mit Python Objekt und Klassen
Objektorientierte Programmierung mit Python Objekt und Klassen hat Kanten hat eine Farbe hat eine Kantenfarbe Rechteck zeichnen Rechteck einfärben Rechteck drehen Modulare Programmierung Eine Aufgabe wird
Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode
Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode
2. Platonische Körper
2 Platonische Körper 27 2. Platonische Körper Dieses Kapitel legt den Schwerpunkt auf die Geometrie. Geometrie in der Grundschule befasst sich mit zwei zentralen Gebieten: Symmetrie und Raumvorstellung.
Abschnitt 9: Schnittstellen: Interfaces
Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung
ANIMATION - GRUNDLAGEN
ANIMATION - GRUNDLAGEN Bei CAD-Programmen gibt es meist folgende Verfahren zur Erzeugung von : Festlegung von Schlüsselszenen, aus denen das Programm automatisch Zwischenbilder generiert ( Keyframing )
Ogre Einführung Teil 1
Inhalt -Einleitung -Installieren und Einrichten von Ogre -Die erste Anwendung Ogre Einführung Teil 1 Einleitung Eine 3D Engine ist eine sehr komplexe Software und besteht aus mehreren tausend Zeilen Programmcode.
Einstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
Website importieren oder erstellen?
94 Eine Website aus Vorlagen Website importieren oder erstellen? Grundsätzlich gibt es zwei Möglichkeiten, MAGIX Web Designer zu benutzen: entweder Sie haben bereits eine Website und wollen sie mit MAGIX
Erwachsenenschule Bremen Abteilung I: Sekundarstufe Doventorscontrescarpe 172 A Bremen. Die Kursübersicht für das Fach Mathematik
Erwachsenenschule Bremen Abteilung I: Sekundarstufe Doventorscontrescarpe 172 A 28195 Bremen Die Kursübersicht für das Fach Mathematik Erwachsenenschule Bremen Abteilung I: Sekundarstufe Doventorscontrescarpe
Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
Wima-Praktikum 2: Bildsynthese-Phong
Wima-Praktikum 2: Bildsynthese-Phong Wima-Praktikum 2: Prof. Dr. Lebiedz, M. Sc. Radic 1 Inhaltsverzeichnis 1 Einleitung 3 2 Kurze Beschreibung der Aufgabenstellung und dem Phong- Modell 3 3 Modellierung
Einführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
5.2 Neue Projekte erstellen
5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort
Angewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Die Vererbung ermöglicht es, neue Klassen auf der Basis von schon
Kapitel D : Flächen- und Volumenberechnungen
Kapitel D : Flächen- und Volumenberechnungen Berechnung einfacher Flächen Bei Flächenberechnungen werden die Masse folgendermassen bezeichnet: = Fläche in m 2, dm 2, cm 2, mm 2, etc a, b, c, d = Bezeichnung
Diplomvorprüfung in Datenverarbeitung EBS Sommersemester 2002
Diplomvorprüfung in Datenverarbeitung EBS Sommersemester 2002 Prüfungsaufgaben zu den Vorlesungen Datenverarbeitung im ersten und im zweiten Semester Aufgabensteller: Gleißner Die Lösungen sind auf das
3. Semester : 1. Prüfung
3. Semester : 1. Prüfung Name : Die gesamte Prüfung bezieht sich auf die!! Prüfungsdauer: 90 Minuten mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter geschrieben werden
Prof. W. Henrich Seite 1
Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse
Geometrie 1. Roman Sommer. Informatik 2 Programmiersysteme Martensstraße Erlangen
Geometrie 1 Roman Sommer Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Grundlagen Punkte, Vektoren Schreibweise: Skalar: Vektor: Komponente: Punkt: (spitzer) Winkel zw. zwei Vektoren:
1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)
Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende
Wie erstellt man dynamische Elemente mit JSXGraph?
Wie erstellt man dynamische Elemente mit JSXGraph? 1. Kurzinformation zu JSXGraph Was ist JSXGraph? Eine freie dynamische Mathematiksoftware, die vollständig in Javascript programmiert ist. Daher benötigt
Non-Photorealistic Rendering
Übersicht 1. Motivation und Anwendungen 2. Techniken - Cel Shading - Konturlinien - Hatching Einführung Traditionelle Computergraphik Ziel: Fotorealismus Einführung Motivation Bewusste Vermeidung von
Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
Kurs zur Ergänzungsprüfung Darstellende Geometrie CAD. Ebenes Zeichnen (2D-CAD) und die ersten Befehle
CAD Ebenes Zeichnen (2D-CAD) und die ersten Befehle Schnellzugriff-Werkzeugkasten (Quick Access Toolbar) Registerkarten (Tabs) Gruppenfenster (Panels) Zeichenfläche Befehlszeile: für schriftl. Eingabe
Theorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
Schrägbilder von Körpern Quader
Schrägbilder von Körpern Quader Vervollständige die Zeichnung jeweils zum Schrägbild eines Quaders. Bezeichne die für die Berechnung des Volumens und des Oberflächeninhalts notwendigen Seiten und bestimme
Lernmodul 2 Geometr.-topol. Datenstrukturen. Lernmodul 2: Geoobjekte und ihre Modellierung - Geometr.-topol. Datenstrukturen
Folie 1 von 27 Lernmodul 2 Geometr.-topol. Datenstrukturen Folie 2 von 27 Geometr.-topol. Datenstrukturen Übersicht Überblick/Motivation Fokus Geometrisch-topologische Datenstrukturen Spaghetti Spaghetti
MB 10. Seiten im Materialblock: Wissensspeicher ab Seite MB 11 Methodenspeicher Seite MB 14 Arbeitsmaterial ab Seite MB 15 Checkliste Seite MB 23
MB 10 Seiten im Materialblock: Wissensspeicher ab Seite MB 11 Methodenspeicher Seite MB 14 ab Seite MB 15 Checkliste Seite MB 23 Wissensspeicher Körper und Flächen MB 11 Wissensspeicher Fachwörter zu Körpern
Grundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
Java: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
16. Platonische Körper kombinatorisch
16. Platonische Körper kombinatorisch Ein Würfel zeigt uns, daß es Polyeder gibt, wo in jeder Ecke gleich viele Kanten zusammenlaufen, und jede Fläche von gleich vielen Kanten berandet wird. Das Tetraeder
Shadingalgorithmen zur Visualisierung nanostrukturierter Oberflächen
Universität Hamburg Fachbereich Informatik Arbeitsbereich Technische Aspekte Multimodaler Systeme Seminar Informatikanwendungen in Nanotechnologien Betreuer: Bernd Schütz Sommersemester 2014 Shadingalgorithmen
Testprüfung (Abitur 2013)
Testprüfung (Abitur 2013) Steve Göring, stg7@gmx.de 3. April 2013 Bearbeitungszeit: Zugelassene Hilfsmittel: 270 Minuten Taschenrechner (nicht programmierbar, nicht grafikfähig), Tafelwerk Name: Punkte:
Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);
Letztes Mal static int ggt(int a, int b) { if (a == b) return a; else if (a > b) } return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Darf hier nicht stehen! Compiler sagt: Missing return statement
LICOM Tutorial Fräsen 3D 3-Achsen
LICOM Tutorial Fräsen 3D 3-Achsen Kapitel 1 Seite 1 von 24 Borchersstr. 20 Kapitel 1 Einleitung Bevor Sie mit dem Durcharbeiten des Tutorials starten: Sofern Sie dieses Tutorial als pdf- Dokument verwenden,
Handbuch organice ExcelTransfer
Handbuch organice ExcelTransfer OSATE Version 2 Stand: Juni 2014 Inhaltsverzeichnis Allgemein... 2 ExcelTransfer-Features... 2 Startmaske... 3 Export Einzeltabelle... 4 Export Adressen und Ansprechpartner...
3.5 Implizite Beschreibungen
3.5 Implizite Beschreibungen 3 Repräsentation und Modellierung von Objekten Idee: Beschreibung von Objekt-Flächen bzw. -Volumina als Isoflächen in Skalarfeldern. Die Skalarfelder ihrerseits entstehen kontrolliert
Objekte für die Sims 2 erstellen. Einführung
Objekte für die Sims 2 erstellen Einführung Dieses Anleitung richtet sich an Anfänger, ist aber trotzdem immer eine gute Referenz für alle Sims2 Designer. In dieser Anleitung möchte ich Ihnen von Anfang
Java Kurzreferenz Für Fortgeschrittene
Java Kurzreferenz Für Fortgeschrittene 1. Initialisierung von Applets: Die Methode init Wenn ein Applet gestartet wird, werden immer zwei Methoden aufgerufen. Diese heissen init und start. Um gewisse Berechnungen
Inhaltsverzeichnis. Inhaltsverzeichnis
Inhaltsverzeichnis Inhaltsverzeichnis Einleitung 5 1 Zahlen 7 1.1 Zahlen und Zahlenmengen....................................... 7 1.2 Rechnen mit Zahlen und Termen....................................
Java Einführung VARIABLEN und DATENTYPEN Kapitel 2
Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen
Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans
Graphische Benutzungsoberflächen mit Java Einführung in NetBeans Graphische Benutzungsoberflächen! Interaktion mit dem Programm! Datenein- und ausgabe! Rückmeldungen über Verarbeitung der Daten! Visualisierung
Arbeiten mit Auswahlwerkzeugen
Arbeiten mit Auswahlwerkzeugen Kennen Sie das auch: Bei der Bearbeitung eines Bildes möchten Sie nur den Himmel verändern, oder einen bestimmten Teil in Schwarz-Weiß umwandeln? Sie denken, das können nur
syntax.tex Eine Übersicht
syntax.tex Eine Übersicht Bernd Worsch 7. Juli 1997 Inhaltsverzeichnis 1 Einleitung 1 2 Bevor es funktioniert... 1 3 Grundelemente von syntax.tex 1 4 Strukturelemente von syntax.tex 3 5 Setzen von Syntaxdiagrammen
Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI
Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer
Mesh-Visualisierung. Von Matthias Kostka. Visualisierung großer Datensätze
Mesh-Visualisierung Von Matthias Kostka Übersicht Einführung Streaming Meshes Quick-VDR Rendering virtueller Umgebung Rendering mit PC-Clustern Zusammenfassung 2 Mesh Untereinander verbundene Punkte bilden
HS Heilbronn - Prof. Dr. P. Fleischmann CAD-K2 10/2010 2/1. Definitionen
HS Heilbronn - Prof. Dr. P. Fleischmann CAD-K2 10/2010 2/1 2 3D-Modellierung 2.1 Modellerzeugung 2.2 Volumenspeicherung beim Solid Model: 2.3 Volumenmodellierung 2.3.1 Verschiebe-Operationen - Sketcher
Preisaktualisierungen via BC Pro-Catalogue
Preisaktualisierungen via BC Pro-Catalogue 1. Allgemein Seite 1 2. Anwendungsfall : Lieferant mit im System bereits vorhandenen Katalog Seite 2-3 3. Anwendungsfall : Neuer Lieferant Seite 4-8 1. Allgemein
Handbuch Teil 9 Produktion
Handbuch Teil 9 Inhaltsverzeichnis 9... 3 9.1 Preisliste... 3 9.2 Fertigungsauftrag... 4 9.3 EXCEL Import Stückliste... 5 9 9.1 Preisliste Die Preisliste bietet die Möglichkeit Stücklisteninhalte in Word
CasCADos 4.1 - Update-Patch 4.1.1083
CasCADos 4.1 - Update-Patch 4.1.1083 CasCADos-Update Version 4.1.1083 Bitte überprüfen Sie vor Installation des Update-Patches zunächst die derzeit auf Ihrem Rechner installierte CasCADos-Version. Voraussetzung
Felder (1) Allgemeines
Felder (1) Allgemeines Gleichartige Daten, wie Tabelle von Zahlen, Datumswerten, Namen etc. Felder (engl. Array) stellen einen Verbundtyp dar, in dem mehrere Daten desselben Typs gespeichert werden Oft
Faustregeln zu Zusicherungen
Faustregeln zu Zusicherungen Zusicherungen sollen stabil sein (vor allem an Wurzel der Typhierarchie) keine unnötigen Details festlegen explizit im Programm stehen unmissverständlich formuliert sein während
Kurs 7 Geometrie 2 MSA Vollzeit (1 von 2)
Erwachsenenschule Bremen Abteilung I: Sekundarstufe Doventorscontrescarpe 172 A 2815 Bremen Kurs 7 Geometrie 2 MSA Vollzeit (1 von 2) Name: Ich 1. 2. 3. So schätze ich meinen Lernzuwachs ein. kann die
Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.
Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe
Vererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
Die abgeleiteten Klassen Kreis und Viereck erben die Elemente des Basisklasse und verfügen über zusätzliche Eigenschaften (Seitenlänge,
Kompaktkurs C++ Vererbung (inheritance) 1 Oft besitzen verschiedene Datentypen einen gemeinsamen Kern: Kreis und Viereck sind geometrische Figuren; sie haben eine Kantenzahl, eine Fläche, einen Umfang
Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife
303 Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife durchgeführt wird. 304 305 for-schleifen sind in Aktivitätsdiagrammen
Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
Das Mathematikabitur. Abiturvorbereitung Geometrie. Autor: Claus Deser Abiturvorbereitung Mathematik 1
Das Mathematikabitur Abiturvorbereitung Geometrie Autor: Claus Deser Abiturvorbereitung Mathematik 1 Gliederung Was sind Vektoren/ ein Vektorraum? Wie misst man Abstände und Winkel? Welche geometrischen