Murdocki
Gebruiker
- Lid geworden
- 7 jun 2007
- Berichten
- 449
jullie hebben vast allemaal wel de perfecte cirkel thread gelezen, deze heb ik gebruikt om met een camera rondom het punt waar hij naar kijkt te draaien. ook heb ik heb gebruikt voor het punt om de camera heen te draaien. 2 functies dus: orbit en normale rotatie.
nu wilde ik als volgende stap ook de camera omhoog en omlaag bewegen maar dan moet natuurlijk wederom de straal hetzelfde blijven. mijn probleem hierbij is dat ik ergens een denkfoutje maak om te berekenen hoeveel de camera over de x en z axis terug moet bewegen. de functie die ik geschreven heb is als volgt:
hierbij is:
loglist: een zelfgemaakte class om info door te geven
GetCamDist_Ground/GetCamDist_Globe: functies die met pythagoras de afstand berekenen
GetCam_posQuadrant: zoekt voor mij het kwadrant waar de camera is op (voor de fun)
het probleem is nu dat ik als groundchange het volgende krijg: "-1.IND00" dit zal wel een of andere sprinf error zijn maar het geeft dus wel aan dat er ergens iets niet lekker zit.
iemand enig idee war ik hier fout doe en wat die error betekent?
p.s. ik weet dat de camera zo de verkeerde kant op draait maar dat is makkelijk verholpen en geen probleem.
nu wilde ik als volgende stap ook de camera omhoog en omlaag bewegen maar dan moet natuurlijk wederom de straal hetzelfde blijven. mijn probleem hierbij is dat ik ergens een denkfoutje maak om te berekenen hoeveel de camera over de x en z axis terug moet bewegen. de functie die ik geschreven heb is als volgt:
Code:
loglist RotateCameraLookDown( float& cameraposx, float& cameraposy, float& cameraposz,
float& cameralookx, float& cameralooky, float& cameralookz,
double& groundangle, double& globeangle )
{
loglist returnlist;
int circlequadrant = GetCam_posQuadrant( cameraposx, cameraposz, cameralookx, cameralookz, groundangle );
sprintf( returnlist.extras, "%s", "started rotcamdwn function-");
float groundradius = GetCamDist_Ground( cameraposx, cameraposz, cameralookx, cameralookz );
float globeradiustemp = GetCamDist_Globe( cameraposx, cameraposy, cameraposz,
cameralookx, cameralooky, cameralookz );
if( globeangle < 215-rotatespeed )globeangle += rotatespeed;
else return returnlist;
cameralooky = cameraposy + groundradius*tan_d(globeangle);
float globeradius = GetCamDist_Globe( cameraposx, cameraposy, cameraposz,
cameralookx, cameralooky, cameralookz );
float groundchange = sqrt((globeradius-globeradiustemp)*(globeradius-globeradiustemp)-(groundradius*sin_d(globeangle))*(groundradius*sin_d(globeangle)));
//cameralookx = cameraposx+(groundradius-groundchange)*cos_d(groundangle);
//cameralookz = cameraposz+(groundradius-groundchange)*sin_d(groundangle);
loglist temp( -1, globeradius, groundchange, rotatespeed,
cameralookz, cameralookx, cameraposx, cameraposz );
returnlist = temp;
return returnlist;
}
loglist: een zelfgemaakte class om info door te geven
GetCamDist_Ground/GetCamDist_Globe: functies die met pythagoras de afstand berekenen
GetCam_posQuadrant: zoekt voor mij het kwadrant waar de camera is op (voor de fun)
het probleem is nu dat ik als groundchange het volgende krijg: "-1.IND00" dit zal wel een of andere sprinf error zijn maar het geeft dus wel aan dat er ergens iets niet lekker zit.
iemand enig idee war ik hier fout doe en wat die error betekent?
p.s. ik weet dat de camera zo de verkeerde kant op draait maar dat is makkelijk verholpen en geen probleem.