Avatar billede chump Nybegynder
11. april 2001 - 21:25 Der er 11 kommentarer

formel til 3d

Hej
Er der nogen der kender til en formel for hvordan jeg udregner den 2-dimensionelle position til et punkt hvor jeg kun kender den 3d?
Jeg har i forvejen denne formel:
SX=((ScreenWidth/2)/(tan (HFOV/2)*Z))*X
SY=((ScreenHeight/2)/(tan (VFOV/2)*Z))*Y

men jeg kan ikke få den til at fungere. Jeg tror det er fordi computeren bruger radianer eller noget.
Avatar billede chump Nybegynder
11. april 2001 - 21:27 #1
nb. disse punkter skal plottes ind i en pictureboks i VB.
Hfov = horisontal field of view
vfov = vertical field of view
(i grader)
Avatar billede nico26 Nybegynder
13. april 2001 - 22:50 #2
hvis øjet er i koordinatsystemets origo (0, 0, 0) og afstanden fra øjet til det plan der skal projekteres på kaldes f gælder:

x\' = f * x/z
y\' = f * y/z
hvor (x\', y\') er punktet i planen der projekteres på

eks.:

en terning med koordinaterne: (4, 6, 4), (6, 6, 4), (4, 4, 4), (6, 4, 4), (4, 6, 6), (6, 6, 6), (4, 4, 6) og (6, 4, 6)

projekteres på et plan med f = 2.
(2, 3), (3, 3), (2, 2), (3, 2), (4/3, 2), (2, 2), (4/3, 4/3), (2, 4/3)
Avatar billede hoejrup Nybegynder
13. april 2001 - 22:56 #3
hmmmm.. En død profil er pludselig stiller spørgsmål om 3d?
Den har været inaktiv i 105 dage.

http://www.eksperten.dk/bruger.phtml?navn=chump&i1=0&i2=0&i3=0&i4=0&i5=0&i6=0&i7=0&i8=1&i9=0&i11=0

/per
Avatar billede nico26 Nybegynder
13. april 2001 - 23:37 #4
hoejrup>>hvad er din pointe
Avatar billede cyberjam Nybegynder
15. april 2001 - 23:22 #5
Jeg har skrevet 3.års-opgave om emnet, hvor jeg fik 10 :)

Vi har et øjepunkt (Xø, Yø, Zø)

og et punkt i rummet der skal projiceres ned i planen: (Xp, Yp Zp)

Jeg benytter xy-planen som projektionsplan. Hvis en anden plan ønskes benyttet som projektionsplan kan man benytte transformationsmatricer til dette. Bare sig til hvis du vil have disse.

Jeg kalder det projicerede punkt for
(Xprojiceret, Yprojiceret)

Når man så bruger \"malerens algoritme\" som giver de 100% eksakte projicerede koordinater, får man:

Xprojiceret = Xø*Zp-Zø*Xp
              -----------
                Zp-Zø


Yprojiceret = Yø*Zp-Zø*Yp
              -----------
              Zp-Zø


Sig til hvis du vil have den fulde matematiske udredning, det fylder en del.

I pascal vil det se nogenlunde sådan her ud:

Xproj := (Xø*Zp-Zø*Xp)/(Zp-Zø);
Yproj := (Yø*Zp-Zø*Yp)/(Zp-Zø);

Håber det var svar nok på dit spørgsmål :)
Avatar billede nico26 Nybegynder
16. april 2001 - 00:10 #6
ligger dit øjepunkt i planen???
Avatar billede cyberjam Nybegynder
16. april 2001 - 13:26 #7
Nico22 jeg havde også den formel med noget

Xp = x/z
Yp = y/z

lignende, og jeg eksperimenterede en del med det. Jeg fandt så ud af at det ikke var det korrekte perspektiv det gav. Når z-værdien blev større, blev tingene kraftigt mindre, meget mindre end de burde.

chump, kan du ikke lige forklare hvad en \"pictureboks i VB\" er?

Det der med field of vision mener jeg at du også kan kontrollere ud fra hvor du placerer øjepunktet i min formel.
Avatar billede nico26 Nybegynder
16. april 2001 - 13:40 #8
den er jo næsten magen til din
Avatar billede cyberjam Nybegynder
16. april 2001 - 16:58 #9
chump hvis problemet er at delphi regner med radianer kan du jo bare omregne gradtallet til radianer:

2PI = 360 grader <=> PI = 180 grader

1 grad = PI/180

Det skulle fungere fint sådan.

nico jeg ved bare at mit problem med at perspektivet ikke var korrekt gik over da jeg skiftede til at bruge den fremstilling jeg nævnte i mit første indlæg her.

Det giver efter min mening også en del større frihed at man er i stand til at flytte øjepunktet.
Avatar billede cyberjam Nybegynder
22. april 2001 - 14:56 #10
For 600 point vil jeg også være villig til at sende dig hele min 3.års-opgave. Den omhandler vektorer, matricer, matrixtransformationer osv. og teorien er benyttet til at lave et delphi-program der viser en kube der kan roteres om en vilkårlig akse. Programmet er desuden fuldt dokumenteret. Selve opgaven er i Word 97 format.
Avatar billede thomasj Nybegynder
03. maj 2001 - 18:55 #11
chump, jeg ser du ikke har lukket tråden endnu. Cyberjam gav dig et fint svar. Jeg vil bidrage med en god 3d tutorial:
http://www.3dica.org/
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester