advertentie

Dit forum is niet langer actief. Voor vragen kun je voortaan terecht in de Vraag & Antwoord-rubriek van PCMweb.nl

 
Oud 28 May 2007, 21:09   #1
Jasper91
PCM Engineer
 
Jasper91's schermafbeelding
 
Geregistreerd: 5 June 2006
Locatie: Den Haag
Berichten: 210
Standaard C++/OpenGL cirkel

Hallo allemaal,

ik heb nogal een complex probleem! Ik ben namelijk bezig met een 3D-project (C++ en OpenGL).
Ik zou ik graag willen dat ik mijn camera een mooi rondje om mijn object kon laten draaien op deze manier:Nu heb je hier geen standaard functie voor dus ik dacht 'De afstand van het middelpunt tot de buitenkant is altijd evengroot. Als je vervolgens op de linker-pijltjes toets toetst kan ik 0.02 van x afhalen. Dan krijg je met de stelling van Pythagoras (mView.z - sqrt(36.0f - ((mPos.x - mView.x) * (mPos.x - mView.x)))) (mView is het object en mPos de positie van de camera). Nu krijg je dus dat als degene naar links clickt, dat z telkens dichter naar het object komt totdat ze naast elkaar staan.
Als ik dit in de praktijk toe pas (met een dezelfde functie voor als je met de camera achter het object zit) krijg ik een ovaal! Rond x=0 gaat het langzaam maar als ik 5.7 is super snel. Nu komt dit door het kwadraat van x maar ik weet niet hoe ik dit op moet lossen!

Hopelijk snappen jullie een beetje wat ik bedoel.

Alvast bedankt voor de hulp en de moeite!

Gr,
Jasper
__________________
Desktop specss: Intel C2D E8400, Foxconn Mars, 2x 2048 OCZ 1000mhz, 2x MSI ATI 4850 CF, 2xSATA II Samsung 160gb RAID 0, 2x 19"Wide
Notebook specs: AMD Turion64 2.0ghz, 1024Mb DDR, ATI X1600 mobility, 100gb harddisk
Mediacenter specs: AMD Athlon 64 X2 4200+ 2.2ghz, Asus M2A-VM HDMI, 2 x Kingston 512MB DDR2 PC5300, Maxtor 320gb SATA II, 22-inch widescreen monitor
Jasper91 is offline   Met citaat antwoorden
Oud 29 May 2007, 00:08   #2
gvanvoor
PCM Lord
 
gvanvoor's schermafbeelding
 
Geregistreerd: 26 January 2006
Locatie: De gezelligste stad ter wereld: Gent
Berichten: 928
Standaard

Als ik goed begrepen heb is je probleem dat de rotatiesnelheid rond je object niet constant is. Dat kan je oplossen door te werken met de hoek die de lijn naar je camera vormt met de x-as.
Dus iets in de aard van:
Code:
mPos.x = mView.x + 6 * cos(alpha);
mPos.z = mView.z + 6 * sin(alpha);
(Ik neem uit je voorbeeld aan dat je een afstand 6 tussen object en camera wil). Afhankelijk van of je in graden of radialen werkt moet je alpha dan variëren van 0 tot 360 resp. 0 tot 2 * pi...
__________________
If you want to work on your computer: buy a PC. If you want to do work on your computer: buy a Mac.

Laatst gewijzigd door gvanvoor : 29 May 2007 om 00:10
gvanvoor is offline   Met citaat antwoorden
Oud 29 May 2007, 06:06   #3
Jasper91
PCM Engineer
 
Jasper91's schermafbeelding
 
Geregistreerd: 5 June 2006
Locatie: Den Haag
Berichten: 210
Standaard

Bedankt! Zal het ff proberen!
__________________
Desktop specss: Intel C2D E8400, Foxconn Mars, 2x 2048 OCZ 1000mhz, 2x MSI ATI 4850 CF, 2xSATA II Samsung 160gb RAID 0, 2x 19"Wide
Notebook specs: AMD Turion64 2.0ghz, 1024Mb DDR, ATI X1600 mobility, 100gb harddisk
Mediacenter specs: AMD Athlon 64 X2 4200+ 2.2ghz, Asus M2A-VM HDMI, 2 x Kingston 512MB DDR2 PC5300, Maxtor 320gb SATA II, 22-inch widescreen monitor
Jasper91 is offline   Met citaat antwoorden
Antwoord


Discussietools
Weergave

Regels voor berichten
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Forumnavigatie


Alle tijden zijn GMT +1. Het is nu 21:03.



Powered by vBulletin Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Nederlandse vBulletin-vertaling door Alacer beschikbaar gesteld door Applinet.