Bonjour,
Encore un message d'appel au secours:) (qu'est-ce que je suis content d'avoir trouvé ce forum)
J'aimerais pouvoir passer en argument à la méthode setPosition de ma caméra un core::vector3d<double>, alors qu'elle ne prend que des vector3df...
(Et j'ai vraiment besoin de ça parce que je représente le système solaire et des satellites artificiels; c'est la différence entre les 2 échelles qui rend ça nécessaire)
Que faire? (parce qu'évidemment j'ai une erreur de compilation)
Hors ligne
J'en vois pas vraiment l'interret mais t'a cas caster à la bourrin :
core::vector3df((f32)MonDouble,(f32)MonDouble,(f32)MonDouble)
Hors ligne
Mouais... Bourrin! merci
Hors ligne
En fait ca ne me va pas du tout... Je m'explique:
Le type f32 d'Irrlicht (qui est utilisé pour core::vector3df) ne garde que les 7 premiers chiffres exacts après un cast depuis un double. En effet, le code suivant:
#include <math.h> int main() { double pi = acos(-1.0); printf("pi (double) = %.20f\n", pi); printf("pi (f32) = %.20f\n", (f32)pi); }
le résultat est:
pi (double) = 3.14159265358979311600 pi (f32) = 3.14159274101257324219
le premier résultat est en effet exact pour les 16 premières décimales. Le deuxième, seulement... 7 (comme annoncé). Et pour mes calculs (astronomiques, au sens propre), j'ai des distances (terre-soleil, par exemple) de 150 000 000 000 de mètres. Donc Irrlicht ne gardant que les 7 premiers exacts, j'ai une incertitude pour ma caméra de ... (roulements de tambour) ... 10km ! Pratique quand on veut suivre un satellite artificiel comme la station internationale ! Alors que mon type double tiendrait bien dans mes exigences.
Donc voilà. J'ai vraiment besoin d'aide, sinon je vais être obligé d'oublier tout ce que j'ai appris pour me servir d'Irrlicht, et de choisir un autre moteur 3D...
Edit: notez que le prototype de acos dans math.h est
extern double acos( double );
donc pas de cast pour la première valeur de pi.
Dernière modification par Manawenuz (02-07-2009 00:19:36)
Hors ligne
Oué bon si justement t'a appris des choses, dire que tu vas changer de moteur 3D pour ça, c'est un peu ridicule. T'a cas te faire ta propre structure de vecteur 3D et puis basta...
Hors ligne
Mon dernier post servait à prouver qu'une structure de données perso pour mes vecteurs 3D ne suffisait pas...
Mais je vais m'accrocher
Hors ligne