PDA

View Full Version : [Frage] Gouraud Shading


magic7
22-01-2003, 17:41
Gouraud Shading, Prüfung 6. Dezember 2002

:ausheck:

Hier kurz die Numerierung, welche Intensitäten
zu welchen Punkten gehören

(3,7,8) = I1
(10,-7,1) = I2
(2,-17,-3) = I3
(-2,-37,25) = I4

Auf der Linie des gesuchten Punktes liegt
auf der Strecke I1,I2 I5 und auf I3, I4 I6.
Der gesuchte Punkt ist I7.

I1=0,33
I2=0,037 (Rundungsfehler, aber den hab ich durchgeschleppt ;))
I3=0,095975
I4=0,27355

I5=0,120714285
I6=0,095975

I7=0,1145


Bis auf Rundungs- und Genauigkeitsfehler sollte die
Lösung stimmen - was meint Ihr?


Liebe Grüße
-Markus

buschti
22-01-2003, 19:32
hm, ich hab mir das noch nicht durchgerechnet, aber müßte für I3 nicht ein negativer Wert rauskommen? Nach der Lambert'schen Regel ist die Intensität an einem Punkt kd*Il*(N*L). Da L=(0,0,1) und der Punkt 3 einen negativen z-Wert besitzt, wäre die Intensität an dieser Stelle auch negativ.

Oder?

Cha
22-01-2003, 19:36
welche Formeln hast du da verwendet?

I(L,diff) = kd*Il*(L*N) und wenn ich da einsetzte: I1 = 1*0.5*((0,0,1)*(3,7,8)) = 0.5*8=4

Außerdem brauch ich doch für die Berechnung der I5 und I6 und I7 die y-WErte der Eckpunkte, die sind aber nicht gegeben, wie geh ich dann vor?

buschti
22-01-2003, 20:00
du mußt natürlich jeden normalvektor zuerst normalisieren. aber ansonsten stimmt die formel schon.
die y-Werte der eckpunkte sind schon gegeben: das raster ist ja abgebildet. aus dem kannst du leicht die y-werte rauslesen. abgesehen davon mußt du ja nicht explizit mit yWerten rechnen. du schaust einfach, wieviele pixel zwischen 2 punkten A und B sind, dann rechnest du (A-B)/(anzahl der pixel) und schon hast du die "schrittweite" der interpolation (es wird ja linear interpoliert).

aber eine andere frage: wenn ich eine negative intensität habe, bedeutet das ja quasi die intensität ist 0, also kein licht. setz ich jetzt die intensität von diesem punkt gleich auf null oder verwende ich für die interpolation den negativen wert (was mir eigentlich sinnvoller erscheint)?

Cha
22-01-2003, 20:14
Blöde Frage, aber wie normalisiert man einen Normalvektor?

buschti
22-01-2003, 20:38
N=(a,b,c) |N|=wurzel[a^2+b^2+c^2]

jetzt dividierst du a,b und c durch |N| und schon hast du den normalisierten vektor.

magic7
22-01-2003, 21:15
Korrektur:

Hab mich in der Zeile verschaut, I3 ist irrtümlich gleich I6 :(

I3: -0,0816

Schließe mich obiger Frage an - kann man da mit "-" weiterrechnen
oder wird der auf Null gesetzt??

Liebe Grüße
-Markus

Cha
22-01-2003, 21:38
Wie berechnet ihr (N*L)? mit dem Kreuzprodukt?

mumpstar
22-01-2003, 22:00
das ist das skalare produkt.
dass berechnest du so: für 2 vektoren..
(x1) (x2)
(y1) * (y2) = (x1*x2 + y1*y2 * z1*z2)
(z1) (z2)

da kommt dann nur ein wert raus.
bei dem gouraud beispiel musst du eh nur den z-wert berücksichtigen weil der L vektor ja (0,0,1) ist.

ciao, alex

Cha
22-01-2003, 22:06
dann kommt bei mir bei I3 aber -0.085 raus, weil -017*0.5 = -0.085 und nicht 0.0816, oder irr ich mich da?

lg

Guinness
22-01-2003, 22:47
Original geschrieben von mumpstar
(x1) (x2)
(y1) * (y2) = (x1*x2 + y1*y2 * z1*z2)
(z1) (z2)


sollte das nicht (x1*x2 + y1*y2 _+_ z1*z2) heissen?

mumpstar
22-01-2003, 23:07
aja. stimmt!! hab mich vertippt...

sorry..

Guinness
23-01-2003, 00:50
kein problem...
ich helf gern bzw bin froh, wenn ich auch einmal einen fehler find... :-))

Kenny
23-01-2003, 03:18
also is N*L jetzt doch das skalarprodukt?

ich denk schon, weil das kreuzprodukt würde ja wieder einen vektor ergeben, und das würd uns doch nix bringen, wir brauchen in dem beispiel ja eine zahl...

magic7
23-01-2003, 15:14
Ja, N*L ist das Skalarprodukt, wobei die Vektoren vorher
normalisiert gehören.

Und meine Lösung von oben ist *FALSCH*,
da ich alle Winkel falsch berechnet hatte - werde
demnächst die richtige Version posten!

Liebe Grüße
-Markus

wolk
24-01-2003, 13:24
ich finde die obige lösung gar nicht sooo falsch

intensität :
oben : 0,362
oben rechts : 0,279
rechts unten : -0,085
links : 0,04

das ergibt interpoliert auf den gesuchten punkt 0,1223

oder ?
irgendwelche einwände ?

mfg wolk

mumpstar
24-01-2003, 13:49
@ wolk

ich hab eigentlich die gleiche lösung..

hast du schon den punkt b) dabei gemacht? dass muss man ja mit der formel auf seite 502 berechnen, oder?

mfg...

Cha
24-01-2003, 14:54
Hey!

Hab die gleichen Intensitäten in den Eckpunkten, aber mein Endergebnis stimmt nicht berrein. Ich habe eine Intensität zw oben und li unten von 0,13143 und rechts von -0,0119.

Meine Frage, wenn eine neg. Int. rauskommt, darf man dann mit der weiterrechnen, oder nicht?

Javanack
24-01-2003, 15:45
kleine frage am rande: nachdem ich die intensität für I1, I2, I3 und I4 berechnet habe, wie kommt man dann auf I5, I6 und I7?