Page 1 of 1

[cg] eye and view transformation...

Posted: Thu Aug 14, 2008 8:06 pm
by Scheder
ok
dus
kdurft eigenlijk zelfs ni vrage, swat
klopt mijn vieweyetransformatie?

iig wa ik dus doe is het volgende

Moff
4 2 1
0.0 0.0 0.0 = oorsprong
0.0 0.0 1.0 = ez
0.0 1.0 0.0 = ey
1.0 0.0 0.0 = ex
3 0 1 2 0 255 0 => groen
3 0 2 3 0 0 255 => blauw
2 0 1

dus maw 2 driehoeke, 1 int xy vlak en 1 int yz vlak
alsk da gewoon uitteken werkt het
alsk nu eye op de oorsprong zet en view op 0,0,1, dus ik kijk van op de z-as recht op het xy vlak, transformeer en ik krijg
+++++
_+___+
__+__+
___+_+
____++
_____+
nen blauwe, da hij blauw ging zijn da haddek wel verwacht, maar ik had em gedraaid verwacht en langs den andere kant bekeken (alsk view op 0,0,-1 zet, hebbek zelfs hetzelfde, wa dus ook ni zou moge kunne?)

swat
mijn viewtransf:

Code: Select all

	PROCEDURE ViewOrigin*(eye: VectorOO.Vector): MatrixOO.Matrix;

BEGIN
ro := FindRo(eye);
phi := FindPhi(eye, ro);
theta := FindTheta(eye);
NEW(return);
return := RotationX(-phi);
return := return^.Mult(RotationZ(-theta - (Math.pi / 2)));
return := return^.Mult(Translation(eye^.ScalarMult(-1)));
RETURN return;
END ViewOrigin;

PROCEDURE FindRo(v: VectorOO.Vector): REAL;

BEGIN
RETURN v^.Norm();
END FindRo;

PROCEDURE FindPhi(v: VectorOO.Vector; ro: REAL): REAL;

VAR
x: REAL;

BEGIN
x := v^.Get(2) / ro;
RETURN Math.arctan(Math.sqrt(1 - (x * x)) / x);
END FindPhi;

PROCEDURE FindTheta(v: VectorOO.Vector): REAL;

VAR
theta: REAL;

BEGIN
IF v^.Get(0) < 0 THEN
theta := Math.arctan(v^.Get(1)/v^.Get(0)) + Math.pi;
ELSIF v^.Get(0) = 0 THEN
IF v^.Get(1) < 0 THEN
theta := (3/2) * Math.pi;
ELSE
theta := Math.pi / 2;
END;
ELSE
theta := Math.arctan(v^.Get(1)/v^.Get(0));
END;

RETURN theta;
END FindTheta;

Posted: Fri Aug 15, 2008 11:20 am
by Fristi
Ge kunt da vergelijken eh, er staat zon bestandje op BB Transformations.Obj (zit in Engine.Arc), kunt daarvan alle matrices afdrukken, druk dan u eigen matrix af en kunt direct zien of em juist is :-)

Posted: Fri Aug 15, 2008 11:36 am
by Pieter Belmans
Je moff is in elk geval fout, objecten dienen steeds helemaal overdekt te zijn. Nu zal het probleem daar wel niet liggen, maar moest er een of andere gek ooit De Grote Moff Validator in zijn code verwerken zou jij getroffen worden door bliksemschichten uit de hemel.

Posted: Fri Aug 15, 2008 11:43 am
by Fristi
I seriously Lol'd :D

Posted: Fri Aug 15, 2008 6:10 pm
by Scheder
lol, meer kan ik echt ni zegge ^^

zo gek ben ik nog niet, ik houd het bij nakijken of de vertices van een polygoon wel in hetzelfde vlak liggen [wat niet het geval is bij de lampekap!! shame on him!!]

en btw, ik denk idd ni da het probleem het overdekke van polygonen is... ^^

thx fristi, dan zal ik da maar eens uitprinten
hmm ik werk wel ni me up vector, mja ok da kan geen probleem geve dan zeker, 0 graden = een upvector gelijk aan de y-as i guess

Posted: Fri Aug 15, 2008 6:40 pm
by Scheder
eye (0, 0, -5, 0)
view (0, 0, 0, 0)
up (0, 1, 0, 0)

maw, ik kijk vanop de z-as naar het nulpunt, en de upvector is de y-as

objfile
-1.00000 0.00000 0.00000 0.00000
0.00000 1.00000 0.00000 0.00000
0.00000 0.00000 -1.00000 -5.00000
0.00000 0.00000 0.00000 1.00000
van mij
-1.0000000000 -0.0000000874 0.0000000000 0.0000000000
0.0000000874 -1.0000000000 0.0000000000 0.0000000000
0.0000000000 0.0000000000 1.0000000000 5.0000000000
0.0000000000 0.0000000000 0.0000000000 1.0000000000

bij eye(0,0,5,0)
1.00000 0.00000 0.00000 0.00000
0.00000 1.00000 0.00000 0.00000
0.00000 0.00000 1.00000 -5.00000
0.00000 0.00000 0.00000 1.00000
van mij
-1.0000000000 -0.0000000874 0.0000000000 0.0000000000
0.0000000874 -1.0000000000 0.0000000000 0.0000000000
0.0000000000 0.0000000000 1.0000000000 -5.0000000000
0.0000000000 0.0000000000 0.0000000000 1.0000000000

ik zie nu ni echt meteen waar het fout gaat XD, maar ok kzal wel is zoeke
de transformations.obj in de oorspronkelijke Engine.Arc is toch in orde e?
wa is er eigenlijk nog verandert aan de engine.arc, want ik zie er 2 op BB
[geef mij toch maar het oude systeem ^^, mr ja]

Posted: Fri Aug 15, 2008 6:46 pm
by Fristi
em heeft aanpassingen gemaakt voor zijne BFC, er is een veldje bijgekomen voor visible. Veel meer zalt ni zijn denk ek

Posted: Fri Aug 15, 2008 6:59 pm
by Scheder
iig ik zie echt het probleem ni.
ro, theta en fi zijn berekent zoals in de cursus
en vieworigin is ook zoals in de cursus...

Arccos x = arctan (wortel(1-x²)) / x
toch?

Posted: Fri Aug 15, 2008 7:30 pm
by Scheder
Ik heb nagekekn wa er verandert bij de matrices van de obj file
0,0 en 2,2 veranderen (p90 bovenaan)
dus maw -sin(theta) en cos(phi)
ik snap wrm phi verandert als ge van den andere kant kijkt van het xy vlak
maar wrm verandert theta?
aangezien theta (p38) alleen maar gebaseert is op de waarde van x en y? en in deze situatie alleen z verandert is? zeker da transformations.obj juist is? XD naja zal wel. ok wrm zie ik dit niet...

Posted: Fri Aug 15, 2008 9:07 pm
by Scheder
right. ik weet toch ni hoe juist die transformations.obj is ze

0.00000 0.00000 -1.00000 0.00000
0.00000 1.00000 0.00000 0.00000
1.00000 0.00000 0.00000 -1.00000
0.00000 0.00000 0.00000 1.00000

deze matrix kregek bij
eye 1,0,0,0
view 0,0,0,0
up 0,1,0,0

maw duidelijk een geval waar naar de oorsprong wordt gekeken
als ge dan zie op pagina 90 dan sta er op 0,2 duidelijk een 0 terwijl in die matrix een -1, zou dus onmogelijk moete zijn volgens de cursus...

Posted: Sat Aug 16, 2008 12:33 pm
by Fristi
jah, hoe juist of fout ze zijn weet ik ni, ik weet enkel da ik dezelfde matrix heb en het marsjeert :)