#0 

30-06-2009 16:54:29

Manawenuz
Petit nouveau
Date d'inscription: 29-06-2009
Messages: 8

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


#1 

30-06-2009 19:18:44

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

J'en vois pas vraiment l'interret mais t'a cas caster à la bourrin :
core::vector3df((f32)MonDouble,(f32)MonDouble,(f32)MonDouble)


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#2 

30-06-2009 23:22:50

Manawenuz
Petit nouveau
Date d'inscription: 29-06-2009
Messages: 8

Mouais... Bourrin! merci

Hors ligne


#3 

01-07-2009 23:15:43

Manawenuz
Petit nouveau
Date d'inscription: 29-06-2009
Messages: 8

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:

Code:

#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:

Code:

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

Code:

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


#4 

02-07-2009 19:30:46

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

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


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#5 

02-07-2009 20:09:22

Manawenuz
Petit nouveau
Date d'inscription: 29-06-2009
Messages: 8

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


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
881 membres
1427 sujets
11117 messages
Dernier membre inscrit: Bidule
19 invités en ligne
Aucun membre connecté
RSS Feed