Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions 2013_14-Aufgabe11.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Aufgabe 11

Durch die Aufgabe gegeben:
```glsl
// Rückgabewert: true, wenn es einen Schnittpunkt gibt, sonst false
bool intersect(
in int i, // Index der zu testenden Ebene (siehe Text)
in vec3 X, // Ausgangspunkt des Strahls
in vec3 d, // Strahlrichtung
out float t // Strahlparameter des Schnittpunktes S: S=X+t*d
);
```

```glsl
vec3 determineIntersection(in vec3 P, in vec3 r, out int index)
{
// Ermitteln Sie hier den Schnittpunkt mit der nächsten Gefäßfläche
// und geben Sie ihn zurück. Zusätzlich muss ’index’ auf den Index
// der entsprechenden Seitenfläche gesetzt werden.

int index = 0;
float dist = -1;

for (int i = 0; i < 6; i++) {
float t;
if (intersect(i, P, r, t)) {
if (dist < 0 || t < dist) {
dist = t;
index = i;
}
}
}

return P + vec3(dist) * r;
}
```

```glsl
vec2 determineTextureCoordinate(in vec3 S, in int index)
{
vec2 UV;
switch(index)
{
// Vervollständigen Sie die Fälle entsprechend der Aufgabenstellung
case 0:
case 1: UV = S.yz; break;
case 2:
case 3: UV = S.xy; break;
case 4:
case 5: UV = S.xz; break;
}
// Fügen Sie ggf. notwendige weitere Anweisungen hier ein

// UV sind immer noch [-1, 1] bis hier, also normalisieren:
UV = vec2(0.5) + vec2(0.5) * UV;

return UV;
}
```