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