Ebauche de moteur 3d

Description

bon ben c'est mon dernier code en java! cette source bien ke relativement avancée, n'est malheureusement pas terminée... Au cours d'un contrôle de routine lors de l'élaboration des ombres, je me suis rendu compte ke java ne supporte le récursif ke dans une certaine mesure car si une fonction tourne trop longtemps sur elle même, un doux message répondant à StackOverflowError apparaît. Problême de mémoire me diriez-vous... Et bien non:

faites-tourner la fonction

void tourneEtFaisPasChier(int i)
{
if(i < 100000)
tourneEtFaisPasChier(i+1);
}

et vous verrez votre stackOverflowError vous raconter sa vie alors ke ce n'est à proprement parler pas un pb de mémoire puiske chake itération demande la crétation d'un entier, c'est à dire au grand max 100Ko! (et encore le test i < 100.000 peut être remplacé par i < 15.000 dans une applet pour ke ca bug aussi!)

Bon enfin bref, j'arrête net mon prog là ou il en est et je change fissa de langage (sans doute visual C++, en espérant ke ce langage, ke nous pouvons considérez comme étant le plus sérieux de tous, permette de faire du récursif!!!)

Donc vous avez sous vos petites mirettes un bon début de moteur 3D permettant une utilisation simple d'objet 3D simple voire complexe mais, comme il n'est pas terminé, je m'adresse plutôt à ceux ki veulent avoir un apercu du fonctionnement ke peut avoir un moteur 3D. Mais je vais faire des mécontents: les commentaires sont inexistants et je ne les rajouterais ke kant tout sera terminé

Pour ceux ki veulent se servir des kelkes fonctionnailtés (il permet kand même d'avoir un apercu rapides de vos surfaces) il permet de représenter des surfaces mathématikes, maillées automatikement (mais là aussi, je n'ai pas fait les tests de finission, donc gare aux bugs!) et des maillages ke vous faites vous même.
Le prog ne permet bien entendu pas l'affichage de z²=x²+y² (il ne résout pas les ék mathématikes) mais affiche sa résolution comme z = sqrt(x²+y²) et z = -sqrt(x²+y²). A vous de programmer la résol, le prog se charge de l'affichage.
bon, le plus simple, c'est de voir l'exemple (dans compilation!, en clikant sur index) et de regarder la source fonction.java
il y a des raccourci clavier:
distance caméra + -
zoom pg+ pg-
filaire f
lissage/facettes l
tourner caméra flêches
tassement t
gonflement g

ainsi ke le drainage de la rotation avec la souris (bouton souris enfoncé)

Bon, il y a possibilité de faire des animations (évolutions temporelles d'ékouations mathématikes par ex) mais c'est la partie où j'ai fait le moins de tests... alors bon... il vaudrait mieux ke vous cherchiez autre chose ou ke vous ... attendiez ke je finisse le prog. Mais bon, c'est pas avant un bout de temps car il devrait y avoir, en plus des commentaires, de nombreuses fonctionnalités: maillage automatike, coupes, transparence, animations, surfaces prédéfinies

Source / Exemple :


un exemple: il suffit de taper la résolution de z² = x² + y² pour avoir une jolie sphère toute colorée!

void fonction1(double x,double y)
  {
    double z,r;
    Color couleur = new Color((int)((x+1)*200/2)+50,(int)((y+1)*200/2)+50,(int)((x+1)*(y+1)/2/2*200+50));
    r=x*x+y*y;
   if(r<=1)
    {
        espace3D.ajouterPoint(Math.sqrt(1-r), couleur);
      if(x>=0.5)
        espace3D.ajouterPoint(-Math.sqrt(1-r), couleur);
      else
        espace3D.neRienAjouterPourCePoint();
    }
      else
        espace3D.neRienAjouterPourCePoint();
  }

Conclusion :


je vais encore avoir un 3/10

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.