Bonjour à tous, je travaille sur un gros projet de ... générateur de planète...
Je suis actuellement entrein de dévellopper un moteur permettant de se déplacer sur une planète à échelle réelle.
Explication : un planète est representé par un cube composé donc de 6 faces sur lequel est appliqué l'algorithme ROAM. Chaque point de subdivision est placé par simple normalisation du vecteur "centre de la sphere -> point" et par multiplication par le rayon puis apres j'utilise une (enfaite plusieurs mais je simplifie) fonction fractale pour calculer l'altitude du point. C'est une fonction continue donc je peux avoir une précision infinie et je devrai donc pouvoir zoomé jusqu'à l'atome et même plus (même si sa ne representerai plus rien) et n'avoir quasiment rien a stocker en mémoire !
Ce qui va me poser problème c'est la limitation des nombres flottants, hors je travail avec directx et toutes les fonctions recoivent des vecteurs aux composantes flottantes, sachant que le rayon de la terre (pour prendre un exemple) est d'environ 6400km est que j'aimerai bien avoir une precision d'au moins 1 décimètre (1 vertex tous les décimètre) je vais avoir un petit problème de précision, surtout du faite que la terre est ronde enfaite :p donc les cosinus et sinus vont vite saturés la mantisse :/
Aussi si vous aviez des idées pour contourner ce problème, je suis preneur :p changement de base, impostors, qu'est ce qui pourrait bien marcher ?
J'ai vu que l'on pouvait passer directx en double precision mais je crois que l'on peut ne l'activer qu'à l'initialisation se qui fait que même les calculs ne la nécessitant pas seront effectuer en double precision et puis sa salit gravement les performances donc si vous aviez mieux a proposer je suis preneur
Merci à vous
Partager