Coder Social home page Coder Social logo

martinthoma / kit-musterloesungen Goto Github PK

View Code? Open in Web Editor NEW
50.0 8.0 30.0 34.84 MB

Musterlösungen für Klausuraufgaben am KIT

TeX 91.97% Makefile 1.75% GLSL 5.42% JavaScript 0.16% C++ 0.61% Python 0.08%
kit karlsruhe-institute-of-technology education tex

kit-musterloesungen's Introduction

KIT-Musterloesungen

Musterlösungen für Klausuraufgaben am KIT

Bitte für jede Vorlesung einen eingenen Ordner und für jedes Klausur eine eigene Datei mit Dateinamen yyyy-[ss/ws], wobei beim Wintersemester das Jahr genommen wird, in dem das Semester startet.

Fach Klausuren TODOs
Echtzeitsysteme 5 164
Computer Graphics 10 33

kit-musterloesungen's People

Contributors

brunoseiwert avatar craeckie avatar danielgeier avatar ezsys avatar fklemme avatar holger-e avatar martinthoma avatar matthiasplappert avatar pavelzw avatar phiresky avatar pjungeblut avatar sleidig avatar tifu avatar upsj avatar vincent23 avatar vinschni avatar zieglerdo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kit-musterloesungen's Issues

CG/2015-Nachklausur Aufgabe 11a

TODO von Aufgabe 11a kann entfernt werden. Die Aufgabe ist, so wie sie ist, korrekt gelöst.

Die Skizze ist allerdings etwas undeutlich. Ich habe mal die Aufgabe auf Papier gelöst und meine Skizze angehängt. Sorry für den TeX-freien Beitrag. ;-)

(Ich habe am Rand noch eine umgangssprachliche Erklärung der C-Stetigkeiten notiert. Hab' sie mit eingescannt, vielleicht hilft sie jemandem.)

2015-nachklausur-aufg11a

CG/2012-Nachklausur, A7 Bezierkurven b)

(II.) Ist auch $C^1$, weil nach der Tangentenbedingung die Tangenten der Kurve am Rand mit der Geraden durch die beiden Kontrollpunkte am Ende übereinstimmt.
Die Gerade durch $b_2$ $b_3$ ist gleich der Geraden durch $c_0$ $c_1$. Somit auch die Ableitung stetig $\rightarrow$ $C^1$.

CG/2015-Hauptklausur, Aufgabe 12 c)

Ich weiß nicht, ob es sich hier nur um eine zeichnerische Ungenauigkeit handelt, aber soweit ich weiß, sollte die erste Bézierkurve in Aufgabe 12 c) entsprechend den Punkten symetrisch sein. Das kann ich in der Zeichung aber nicht erkennen.

Ich meine, das Ergebnis müsste auf "Nein" korregiert werden, da der Graph offensichtlich nicht symmetrisch ist / hier nicht durch den Mittelpunkt geht.

Stelle im Text: https://github.com/MartinThoma/KIT-Musterloesungen/blob/master/CG/2015-Hauptklausur/2015-Hauptklausur.tex#L417

CG/2012-Nachklausur, A2 Blending a)

Farbe von glClear vergessen.

Richtig wäre bei (I.):

  1. $1.0$
  2. $0.5\cdot0.2+0.5\cdot1.0=0.6$
  3. $0.5\cdot0.4+0.5\cdot0.6=0.5$
    und bei (II.):
  4. $1.0$
  5. $0.5\cdot0.4+0.5\cdot1.0=0.7$
  6. $0.5\cdot0.2+0.5\cdot0.7=0.45$

CG/2012-Hauptklausur Aufgabe 9c)

Erstmal muss man sagen, dass die Aufgabenstellung nicht zur Skizze passt!

In der Aufgabenstellung wird von einem kubischen Spline (-> C_2 stetig, A-Frame, ...) gesprochen.
In der Skizze wird aber ein Spline gezeigt, welcher nur C_1 stetig ist (kein A-Frame).

Lösung für Skizze (C_1 stetig):

geänderte Kontrollpunkte: b2, b3=c0, c1
geänderter Kurvenverlauf: zwischen b0 und c3

Hier sind die Kontrollpunkte b2' und c3' nicht eindeutig bestimmt (soweit ich weiß), deshalb ist die Skizze wohl einfach nur falsch und man sollte sie ignorieren und die Lösung für kubische Splines suchen.

Lösung für Aufgabenstellung (C_2 stetig = kubisch):

https://imgur.com/a/IxujN
geänderte Kontrollpunkte: a3, ..., d0
geänderter Kurvenverlauf: zwischen a0 und d3

Alle Kontrollpunkte a3', ..., d0' sind dabei eindeutig!

CG/2013-Nachklausur, A2 Beleuchtung und Wahrnehmung a)

Ich hab das Phong Modell jetzt mal in Polarkoordinaten geplottet:
phong

Der Kreis am Rand (bei 1) ist ambient.
Der Kreis in der Mitte ist diffuse.
Und rechts das ist spekular.

Müsste dann nicht bei Aufgabe 2 Beleuchtung und Wahrnehmung a) im letzten Bild der ambiente Anteil zu sehen sein?

CG/2012-Nachklausur, A5 Raycasting: Der "Wir sind in der Kugel"-Fall fehlt

Der wir sind in der Kugel Fall fehlt. Meine Lösung:

uniform vec3 eye; //Position des Betrachters in Weltkoord
in vec3 dir;      //Strahlrichtung in Weltkoord
uniform vec3 spheres[10];
out vec4 fragColor;
int main() {
    float t = -1;
    vec3 pos;
    vec3 center;
    for (i=0; i < 10; i++) {
        vec4 sphere = spheres[i];
        vec2 s = intersectRS(eye, dir, sphere.xyz, sphere.z);
        if (s.x > 0 && s.x < t) {t = s.x; center = sphere.xyz;}
        if (s.y > 0 && s.y < t) {t = s.y; center = sphere.xyz;} // Wir sind in der Kugel
    }
    if (t != -1) {
        pos = eye + t * dir;
        fragColor = computeShading(pos, normalize(pos - center));
    }
    // ...
}

CG/2011-Nachklausur Aufgabe 4

Aufgabe 4 a)
Erstellung der Mip-Map-Pyramide:
In Stufe 0 wird die ursprüngliche Textur gespeichert, in Stufe 1 dann eine Textur die in beiden Dimensionen halbiert wurde usw.

CG/2015-Hauptklausur Aufgabe 9

  1. Falsch, Dehomogenisierung wird vor Rasterisierung ausgeführt; s. https://www.opengl.org/wiki/Rendering_Pipeline_Overview (ist Teil von Vertex Post-Processing) (bin mir aber nicht 100% sicher, weil in der VL nicht genau gesagt wurde wann genau nach Clipping; denke aber direkt danach)
  2. Richtig, Vl 07 Teil 1, Folie 12
  3. Richtig, s. https://www.opengl.org/wiki/Rendering_Pipeline_Overview (Teil von Vertex Post-Processing)
  4. Falsch, Texturen können auch in anderen Shadern gelesen werden, z.B. im Geometry Shader die Textur sample: https://www.opengl.org/wiki/Geometry_Shader_Examples

CG/2011-Nachklausur, A7 Blending

A) 1)
Meiner Meinung nach erfolgt kein Blending. Durch den aktivierten Tiefentest wird der rote Würfel nicht beachtet, da er hinter dem blauen Ball liegt.
Daher: color_P=(0.0, 0.0, 1.0, 0.5)
siehe "OpenGL Teil 2 und 3" Folie 88

b)
Bleuchtungsberechnung findet auf jeden Fall vor der Projektionstransformation statt (OpenGL Teil 1, Folie 39)
Daher würde ich sagen
1
2
3
5
4

c)
Nach der Projektionstransformation

Für b) und c) siehe auch https://en.wikipedia.org/wiki/Graphics_pipeline#Lighting

CG/2015-Hauptklausur Aufgabe 5

Aufgabe 5
a) BVH 2, weil
-BVH2 im 1. Schritt nur 1 Schnitttest (bzw 2 Schnitttests, wenn die AABBs B und C einzeln getestet werden müssen) benötigt -> Erst Überprüfung ob Schnitt mit einem Primitiv bzw Sub-AABB möglich
-BVH1 im 1. Schritt immer 4 Schnitttests benötigt, dann direkt mit Primitiven

CG/2015-Nachklausur, Aufgabe 8a

Ich verstehe Folien 73 und 74 zu Quadtrees so, dass immer mit dem nahsten Kindknoten weiter gemacht wird.
Bei der Aufgabenstellung ist jedoch unklar in welcher Knotentiefe die Dreiecke sind.
Auf Folie 74 kommt beides vor:

  • Das kleine blaue ist auf zwei Blattknoten unterteilt.
  • Das große grüne befindet sich hingegen direkt in der Wurzel.

Ich vermute wir sollen wie in Hauptklausur 2012 Aufgabe 5 b) (lies da mal den Aufgabentext genau) annehmen, dass die Primitive nur in Blattknoten gespeichert werden und ggf. geteilt werden.

Dann gibt es eine einfache Lösung nämlich einfach: G I I H C C C A (und Schnitt gefunden --> fertig).
(Achso: Wir sollen nur Schnitte mit Dreiecken angeben, steht da.)

CG/2015-Nachklausur, Aufgabe 1a)

Hier geht es doch um Whitted-Style Raytracing und nicht um das Phong-Beleuchtungsmodell, oder? Ich denke die Aufgabe zielt eher darauf ab, was für Sekundärstrahlen verschossen werden (Schattenstrahl, Reflexionsstrahl, Transmissionsstrahl). Sicher bin ich mir jedoch auch nicht.

CG/2014-Hauptklausur, Aufgabe 6

Bei der Aufgabe 6c sind mir zwei Punkte aufgefallen die glaube ich nicht so stimmen.

Aussage 2 ist Falsch, da bei einer BVH die Dreiecke immer nur in maximal einem Blatt enthalten sind. Somit werden sie maximal einmal getestet und kein Mailboxing ist notwendig.

Aussage 3 ist Falsch. Zumindest habe ich keine Aussage zum Speicherbedarf gefunden. Die Anzahl der nötigen Schnitttests hängt jedoch logarithmisch von der Anzahl der Primitve ab. vgl. Foliensatz 5 Folie 48.

Aufgabe 6d:

Aussage 3 trifft auch auf BVHs zu. vgl. Folie 98

CG/2015-Hauptklausur Aufgabe 4

Aufgabe 4 a) ii)
Man sollte vor der Normalisierungstransf. clippen, weil vor der Dehomogenisierung x=w gilt, nach dem Dehomogenisieren müssen Tiefenwerte betrachtet werden um problematische Fälle zu erkennen (w=0 möglich, dann Division durch 0?) (s. Vl 06 Folie 39-41)

CG/2014-Hauptklausur, Aufgabe 6 d) 2.

Der Aufwand für den Aufbau ist linear bei Gittern: Du weißt ja sofort wo das dreieck hin muss wenn du dir es anschaust, musst es also nicht zweimal anschauen. Man muss das Ergebnis dann zwar noch eintragen und ein dreieck könnte ja über alle Felder des gitters gehen aber das ist nicht die Frage. Die Laufzeit dürfte O(n*m) sein wobei n die anzahl der dreiecke und m die anzahl der Felder im Gitter ist (im schlimmsten Fall muss man jedes dreieck in alle gitter zellen eintragen).

CG/2015-Hauptklausur Aufgabe 8

Aufgabe 8
b) Tiefentest ist aktiviert, weil Feuer teilweise von Rauch verdeckt der weiter vorne im Bild ist
Tiefenpuffer deaktiviert, weil sich Rauch konstant verändert, d.h. Puffern bringt nichts da nur falsche Werte enthalten wären und deshalb immer neu berechnet werden muss

CG/2015-Nachklausur/2015-Nachklausur Lösung für 3b

z' = E - C
x' = u \times z'
y' = z' \times x'

x,y,z ergeben sich dann noch aus der normalisierung. (Es ist ja eine Orthonormalbasis gefragt, glaub das heißt gerade orthogonale und normalisierte Basisvektoren.)

CG/2015-Nachklausur, Aufgabe 10 (Bug)

Sollten wir hier nicht die Transformationsmatrix für Normalen anpassen? Also aus

vec3 normal_wc = matO2W * normal;

sollte

vec3 normal_wc = transpose(inverse(matO2W)) * normal;

werden? Der Code-Kommentar auf dem Aufgabenblatt sagt eindeutig, dass die Matrix zur Transformationen von Positionen und nicht (wie hier verwendet) von Normalen dient. Dieses Vorgehen würde auch erklären, warum es hier 9 Punkte gibt.

Ich muss allerdings eingestehen, dass ich schon etwas überrascht bin, dass es eine inverse Funktion in GLSL gibt.

CG/2015-Nachklausur Aufgabe 11b

Die Aufgabe ist richtig beantwortet, aber die Punkte sind durcheinander gekommen: Die dritte Kurve verletzt nicht Punkt 3 (Endpunktinterpolation) sondern Punkt 4 (Variationsreduktion).

Die anschließende Begründung ist in Ordnung.

CG/2013-Nachklausur, A3 Transformationen c)

Rotationsmatrizenmultiplikation ist nicht kommutativ in $R^3$.
Beispiel:
R_x(\pi) * R_z(\pi) = [1 0 0;0 0 1;0 -1 0] * [0 1 0;-1 0 0;0 0 1] = [0 1 0; 0 0 1;1 0 0] \ne [0 0 1;-1 0 0;0 -1 0] = [0 1 0;-1 0 0;0 0 1] * [1 0 0;0 0 1;0 -1 0] = R_z(\pi) * R_x(\pi)

CG/2011-Nachklausur Aufgabe 3

Aufgabe 3
a) Bei Adaptiven Supersampling werden bei zu großer die Pixel in 4 Bereiche unterteilt und dann weitere Strahlen verfolgt, bis die Differenz den Schwellwert unterschreitet.

Bei stochastischen Supersampling werden die Pixel in Gitter unterteilt und dann pro Gitter-Zelle ein Strahl durch einen Zufallspunkt innerhalb der Zelle geschossen.

CG/2011-Nachklausur, 7b)

Via FB:

Die Fixed Function Pipeline kann doch nur Gouraud oder Flat Shading. Das heißt, die Beleuctung wird pro Vertex in Kamera Koordinaten berechnet. Dementsprechend müsste die Reihenfolge anders sein. Meine Lösung wäre da 1, 4, 5, 3, 2.

CG/2013-Hauptklausur, A6) c)

Gerade von Holger via E-Mail:

steps sollte noch erhöht werden; t und d sollten evtl. gleich sein?

Muss ich mir noch anschauen.

CG/2011-Nachklausur, Aufgabe 1

Aufgabe 1.c
Die Matrix C ist zum Schärfen und nicht zum Hervorheben aller Kanten (vgl Übung 02_Bildoperationen Folie 20)

Aufgabe 1.d
Die Helligkeit des Bildes ändert sich, bei normalisierten Kerneln bleibt die Gesamthelligkeit erhalten (s. Übungsfolie 02_Bildoperationen Folie 19)

CG/2014-Nachklausur Aufgabe 1

e)
14_n_1e

(etwas künstlerischer Ansatz mit Paint :D)

f) Die Intensität nimmt ab, da der Winkel größer wird -> cos-Faktor wird kleiner ->(spekularer Teil) wird weniger

CG/2014-Nachklausur, 6d

Die angegebene Lösung ist falsch.

Im vergleich zu Foliensatz 4 Folie 38 sind b und (1-b) getauscht.

Somit ist t = t12 * b + t34 * (1-b)

CG/2013-Hauptklausur Aufgabe 11b

Meine Lösung wäre

  1. Nein, die Kurve liegt nicht in der konvexen Hülle
  2. Ja
  3. Ja
  4. Nein, die Kurve wackelt stärker als ihr Kontrollpolygon

CG/2015-Hauptklausur Aufgabe 9

Fehler in #58:

Punkt 2 ist definitiv falsch! Zitat Foliensatz 07, Seite 15:

Primitive Assembly setzt aus den Vertices die angeforderten Primitive zusammen und ist nicht programmierbar.

(Die anderen Punkte hab ich nicht überprüft, nur bei Punkt 2 ist mir der Fehler gleich aufgefallen.)

CG/2014-Nachklausur, 8d

Vierte Aussage trifft auch auf BVHs zu.
SAH lässt sich zur Konstruktion von BVHs einsetzen. Vgl Foliensatz 5 Folie 98

CG/2015-Hauptklausur, 5b/3

Das ist eine "Grau-Zone", glaube ich. "Sortierung der Primitive notwendig" -- dies scheint mir die Sortierung nach den Objektmittelpunkten zu umfassen.

CG/2014-Hauptklausur 1e 3. Aussage

Jeder Farbeindruck für den Menschen kann mit drei Grundgrößen beschrieben werden.

Ich bin der meinung die Aussage ist richtig. Vgl. 1.d sagt ja nur das der physikalisch realisierbare RGB-Farbraum nicht ausreicht. Trotzdem ist es ein Dreidimensionale Größe (vgl. Graßmannsche Gesetze Folie 6, 01-..-Teil 2).

Soll ich so Anmerkungen lieber in FB oder hier posten?

CG/2011-Hauptklausur Aufgabe 5.b)

Objekte werden bei der Traversierung potentiell mehrfach geschnitten?
BSP:

Ich denke, dass hier ein Kreuz hin muss, da in der Aufgabenbeschreibung steht, dass Dreiecke nicht zerteilt werden (und natürlich kein Mailboxing).

Bei einem Aufbau wie in meiner Skizze, wird das Dreieck x zweimal überprüft, da der Schnittpunkt beim ersten mal nicht im aktuellen Knoten ist (vgl. K5, F106).

Skizze

(https://imgur.com/a/ILk3Y)

Natürlich kann man in dem Beispiel einen BSP aufbauen, der keine Dreiecke schneidet, es ist trotzdem ein valider BSP und deshalb gilt auch die Aussage.

CG/2013-Nachklausur, Aufgabe 11 (4)

Frage 4: Ich denke der Operator ist nicht kommutativ. Würde man die Reihenfolge (also SRC und DST) vertauschen, würde ja zweimal der Alpha-Wert von DST genommen. Dieser kann ja anders sein als der Alpha-Wert von SRC.

Bin mir nicht zu 100% sicher, von daher als Issue und nicht als Pull Request.

CG/2015-Nachklausur Aufgabe 1 b

Wie schon in Aufgabe 1c) beschrieben (als u und v bezeichnet) ergeben sich die Achsen durch
z=-(C-E)
x=u \dot z
y= x \dot z

CG/2014-Nachklausur, Aufgabe 5

Ich glaub das ist ne richtig. Aufgabe ist ja ne Basiswechselmatrix. Dabei ist aber keine Basis die Normalbasis!

(1 0 0)_S1 heißt ja 1 * u1 + 0 * v1 + 0 * w1.

Also müsste für M' (M ohne translation gelten): (-1 0 0)_S2 = M' * (1 0 0) da -1 * u2 = 1 * u1. Das gilt aber für deine Rotationsmatrix nicht.

Die korrekte berechnung erfolgt durch Darstellung der orhonormalen Bsisvektoren von S1 durch die von S2:

-1  0  0
 0  1  0
 0  0 -1

Auch die Translation ist dann nicht zur Standartbasis sondern zur Basis des jeweiligen Raumes
(-1 -2 1) für S1 und (1 -2 -1) für S2.

Insgesamt:

-1  0  0  1
 0  1  0 -2
 0  0 -1 -1
 0  0  0  1

CG/2011-Nachklausur Aufgabe 5

Aufgabe 5 c)
Bei der 2. Iteration sollte \alpha_s=(-2)/6 sein, weil WEC_ymin(P_1)=-2 wie in Aufgabe 5a berechnet.
D.h. a_max ist -(2/6) und das neue Liniensegment (P_0+ (1/3)(P_1-P_0), P_1 - (2/6)(P_1-P_0))

CG/2014-Hauptklausur 2 a-d, f

Es ist der Reflexionsstrahl für das Raytracing gesucht also von der Kamera aus. (Nicht von der Lichtquelle aus).

Ich denke mal das es bein transmittierten Strahl genauso ist, wobei hier die Aufgabenstellung nicht ganz klar ist.

Der Winkel alpha lässt sich dann als R_V \cdot L (= R_L \cdot V - so ist er jetzt eingetragen) eintragen.

Hinweis zu f. Der Phongexponent ist auch Materialparameter, er gibt ja an wie sehr die Oberfläche streut.

CG/2011-Nachklausur, Aufgabe 5

Hier fehlt der Fall, dass der Strahl innerhalb der Kugel startet:

else if (isec.y < t && isec.y > 0)
{
t = isec.y;
pos = eye + t * dir;
normal = normailize(pos - spheres[i].xyz);
}

CG/2014-Nachklausur, Aufgabe 8d

Beim ersten:

Der aufbau-algorithmus passt die Datenstruktur an die Gomentrie an. Ich würde sagen die Aufgabe ist hier nicht klar formuliert bei adaptiven gittern ist es der Fall aber bei regulären gittern nicht. Da nur Gitter da steht bin ich von regulären Gittern ausgegangen.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.