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.
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.
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.
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.
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.
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/
Synes godt om
Ny brugerNybegynder
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.