[cg] eye and view transformation...

Forum van 1ste Bachelor Informatica.

Moderator: Praesidium

User avatar
Scheder
Posts: 212

[cg] eye and view transformation...

Post#1 » Thu Aug 14, 2008 8:06 pm

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;

User avatar
Fristi
WOZ
Posts: 4565

Post#2 » Fri Aug 15, 2008 11:20 am

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 :-)
Fristi Ad Infinitum

WINAK WOZ 2013 - ...
WINAK Magister Fristi 2012-2013
WINAK Feest 2011-2012
WINAK Schachtentemmer 2010-2011
WINAK Scriptor 2008-2009 | 2009-2010

Pieter Belmans
Posts: 593
Contact:

Post#3 » Fri Aug 15, 2008 11:36 am

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.

User avatar
Fristi
WOZ
Posts: 4565

Post#4 » Fri Aug 15, 2008 11:43 am

I seriously Lol'd :D
Fristi Ad Infinitum

WINAK WOZ 2013 - ...
WINAK Magister Fristi 2012-2013
WINAK Feest 2011-2012
WINAK Schachtentemmer 2010-2011
WINAK Scriptor 2008-2009 | 2009-2010

User avatar
Scheder
Posts: 212

Post#5 » Fri Aug 15, 2008 6:10 pm

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

User avatar
Scheder
Posts: 212

Post#6 » Fri Aug 15, 2008 6:40 pm

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]

User avatar
Fristi
WOZ
Posts: 4565

Post#7 » Fri Aug 15, 2008 6:46 pm

em heeft aanpassingen gemaakt voor zijne BFC, er is een veldje bijgekomen voor visible. Veel meer zalt ni zijn denk ek
Fristi Ad Infinitum

WINAK WOZ 2013 - ...
WINAK Magister Fristi 2012-2013
WINAK Feest 2011-2012
WINAK Schachtentemmer 2010-2011
WINAK Scriptor 2008-2009 | 2009-2010

User avatar
Scheder
Posts: 212

Post#8 » Fri Aug 15, 2008 6:59 pm

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?

User avatar
Scheder
Posts: 212

Post#9 » Fri Aug 15, 2008 7:30 pm

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...

User avatar
Scheder
Posts: 212

Post#10 » Fri Aug 15, 2008 9:07 pm

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...

User avatar
Fristi
WOZ
Posts: 4565

Post#11 » Sat Aug 16, 2008 12:33 pm

jah, hoe juist of fout ze zijn weet ik ni, ik weet enkel da ik dezelfde matrix heb en het marsjeert :)
Fristi Ad Infinitum

WINAK WOZ 2013 - ...
WINAK Magister Fristi 2012-2013
WINAK Feest 2011-2012
WINAK Schachtentemmer 2010-2011
WINAK Scriptor 2008-2009 | 2009-2010

Return to “1ste Bachelor”

Who is online

Users browsing this forum: No registered users and 50 guests