Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UN LOGICIEL DE DESSIN 3D


Information sur la source

Description

projet abandonné (non terminé) mais peut donner des idées (mais va falloir vous accrocher!)
sans java3D, pas de zbuffer
heapsort, courbes et surfaces nurbs
les menus s'affichent lorske le curseur s'approche des bords de l'applet (gauche haut et droit)
un exemple est donné (une voiture) mais les menus n'y fonctionnent plus
Le gros du prog tourne. Seul le rendering ne fonctionne pas. pour des exemples de remplissages des éléments de surface, voyez mes autres progs: rubixcube (jeu) et terre (divers)

dernière: lorske j'ai voulu le compiler pour voir si ce vieux prog marchait (projet dessin3D.jpr sous Jbuilder perso), il est signalé ke certaines classes ne sont pas trouvées, alors k'elles sont toutes là! si vous savez koi faire... moi je le laisse tomber. Alors pour ceux ke ça intéresse...
 

Source

  • //classe principale
  • import java.applet.Applet;
  • import java.awt.*;
  • import java.awt.event.*;
  • import java.awt.image.*;
  • import java.lang.Math;
  • import java.lang.Thread;
  • import java.lang.System;
  • import java.util.*;
  • public class go extends Applet implements Runnable
  • {
  • Image ADEFINIR;
  • MediaTracker myTracker=new MediaTracker(this);
  • //Toolkit T;
  • //tools t;
  • Graphics g1,g2,g3;
  • Font F = new Font("Courier",1,14);
  • Image Imagecachée1,Imagecachée2,Imagecachée3,palette;
  • MemoryImageSource M = null;
  • Thread thisThread = null;
  • espace E = new espace();
  • menu Menu = new menu(E);
  • MesConstantes co = new MesConstantes();
  • points LesPoints = new points();
  • fenêtre f = new fenêtre(Menu,E);
  • lignes LesLignes = new lignes(E);
  • surfaces LesSurfaces = new surfaces(Menu,E);
  • volumes LesVolumes = new volumes(LesSurfaces,E);
  • grille Grille = new grille(E,Menu,LesLignes,LesSurfaces);
  • sélection sélectionner;
  • boolean ilyaDesSurfaces = false,
  • toutActualiser = true,
  • actualiserLaGrille = false,
  • ilFaudraActualiser;
  • int x[],y[];
  • ligne ligneCourante,ligneCourante1,ligneCourante2,ligneCourante3,ligneCourante4,ligneCourante5,ligneCourante6,ligneCourante7,L1;
  • surface surfaceCourante;
  • volume volumeCourant;
  • point temp,PointCourant;
  • R2int pointCourant;
  • outils ou = new outils();
  • public void init()
  • {
  • LesSurfaces.initialiser(this);
  • palette = getImage(getDocumentBase(),"palette.jpg");
  • myTracker.addImage(palette,0);
  • try{myTracker.waitForID(0);}
  • catch (InterruptedException e){System.err.println ("Erreur : " + e);}
  • f.palette = palette;
  • f.chargerLaPalette();
  • x = new int[4];
  • y = new int[4];
  • setBackground( Color.black );
  • Imagecachée1 = createImage(co.largeurEcran,co.hauteurEcran);
  • g1 = Imagecachée1.getGraphics();
  • Imagecachée2 = createImage(co.largeurEcran,co.hauteurEcran);
  • g2 = Imagecachée2.getGraphics();
  • Imagecachée3 = createImage(co.largeurEcran,co.hauteurEcran);
  • g3 = Imagecachée3.getGraphics();
  • g2.setFont(F);
  • sélectionner = new sélection(f,Menu,LesLignes,LesSurfaces,LesVolumes,E);
  • Menu.afficherGrille = true;
  • /* Point P = new Point(10,10);
  • setCursor(t.createCustomCursor(ADEFINIR,P," "));*/
  • thisThread = new Thread(this);
  • thisThread.start();
  • }
  • public void start(){thisThread.resume();}
  • public void stop(){if (thisThread.isAlive())thisThread.suspend();}
  • public void run(){repaint();}
  • /* public void mousePressed(MouseEvent e)
  • {
  • if(!((e.getModifiers() & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK))
  • {
  • Menu.sélectionner = false;
  • Menu.clic = "";
  • }
  • }
  • */
  • public synchronized boolean handleEvent(Event e)
  • {
  • E.AncienPointCourant = PointCourant;
  • E.ancienPointCourant = pointCourant;
  • if(e.x != 0 || e.y != 0)
  • Menu.pointCourant = pointCourant = new R2int(e.x,e.y);
  • Menu.positionSouris();
  • sélectionner.PointCourant = PointCourant = new point(co.écran,pointCourant,E);
  • if(!Menu.tournerLaCaméra &&
  • (!Menu.ignorerLeClic &&
  • !Menu.déplacerCaméra &&
  • !Menu.tournerLaGrille &&
  • !Menu.sélectionner &&
  • !Menu.zoom &&
  • Menu.clic != "surface sur 4 chemins" &&
  • Menu.clic != "surface sur 2 chemins" &&
  • Menu.clic != "extruder un chemin" &&
  • Menu.clic != "révolution d'un chemin" &&
  • !(Menu.clic == "cylindre" )))
  • {
  • if(Menu.accrocherGrille && !Menu.déplacerGrille && !Menu.joindreChemins)
  • {
  • Grille.accrocher(PointCourant);
  • sélectionner.PointCourant = PointCourant = new point(co.travail,PointCourant.coordPlanDeTravail,E);
  • }
  • if(Menu.accrochage && !Menu.centreRotation)
  • {
  • LesLignes.PointCourant = PointCourant;
  • temp = LesLignes.sélectionnerPoint();
  • if(temp != null)
  • PointCourant = new point(co.espace,temp,E);
  • }
  • else
  • if(Menu.centreRotation)
  • {
  • ilFaudraActualiser = true;
  • toutActualiser = sélectionner.unPoint();
  • if(toutActualiser)
  • E.pointVu = sélectionner.résultatP;
  • PointCourant = sélectionner.résultatP;
  • }
  • else
  • if(Menu.déplacerGrille)
  • {
  • ilFaudraActualiser = true;
  • toutActualiser = sélectionner.unPoint();
  • if(toutActualiser)
  • E.originePlanDeTravailtemp = E.originePlanDeTravail;
  • E.originePlanDeTravail = sélectionner.résultatP;
  • }
  • }
  • Menu.ignorerLeClic = false;
  • LesLignes.pointCourant = E.pointCourant = PointCourant.coordEcran;
  • f.PointCourant = LesLignes.PointCourant = E.PointCourant = PointCourant;
  • switch (e.id)
  • {
  • case Event.MOUSE_MOVE:
  • if(!Menu.dessinDunElément && !Menu.centreRotation && !Menu.déplacerGrille &&
  • !Menu.sélectionner && !Menu.joindreChemins)
  • sélectionner.nombreDePointsCliqués = 0;
  • break;
  • case Event.MOUSE_DOWN:
  • break;
  • case Event.MOUSE_DRAG:
  • if(Menu.tournerLaCaméra)
  • {
  • E.tournerCamera();
  • ilFaudraActualiser = true;
  • toutActualiser = false;
  • }
  • else
  • if(Menu.tournerLaGrille)
  • {
  • E.tournerGrille();
  • actualiserLaGrille = true;
  • }
  • else
  • if(Menu.déplacerCaméra)
  • {
  • E.déplacerCaméra();
  • ilFaudraActualiser = true;
  • toutActualiser = false;
  • }
  • else
  • if(Menu.zoom)
  • {
  • E.zoom();
  • ilFaudraActualiser = true;
  • toutActualiser = false;
  • }
  • else
  • if(Menu.déplacerGrille)
  • actualiserLaGrille = true;
  • break;
  • case Event.MOUSE_UP:
  • sélectionner.clicUp = true;
  • toutActualiser = ilFaudraActualiser;
  • ilFaudraActualiser = false;
  • if(Menu.dessinDunElément || Menu.centreRotation || Menu.déplacerGrille ||
  • Menu.sélectionner || Menu.joindreChemins)
  • sélectionner.nombreDePointsCliqués++;
  • if(Menu.dérouler)
  • {
  • if(f.isVisible())
  • f.afficher();
  • Menu.dessiner(g2);
  • Menu.enregistrerClic();
  • if(Menu.ignorerLeClic && Menu.dessinDunElément)
  • {
  • sélectionner.nombreDePointsCliqués--;
  • sélectionner.clicUp = false;
  • Menu.ignorerLeClic = false;
  • }
  • }
  • break;
  • default:
  • return false;
  • }
  • if(Menu.sortie)
  • sélectionner.clicUp = false;
  • Menu.sortie = false;
  • repaint();
  • return true;
  • }
  • public void raffraîchir(int queFautIlDessiner)
  • {
  • g1.clearRect(0,0,co.largeurEcran,co.hauteurEcran);
  • if(Menu.afficherLesSurfaces && queFautIlDessiner != co.nePasRedessinerLesSurfaces)
  • LesSurfaces.Dessiner(g1);
  • ;
  • if(!ilFaudraActualiser && (!Menu.tournerLaGrille && Menu.afficherGrille && !Menu.déplacerGrille ||
  • (Menu.clic == "surface sur 4 chemins" || Menu.clic == "surface sur 2 chemins" ||
  • Menu.clic == "joindre 2 chemins" || Menu.clic == "extruder un chemin" ||
  • Menu.clic == "révolution d'un chemin") && Menu.afficherGrille))
  • Grille.dessiner(g1);
  • ;
  • if(Menu.afficherLesLignes && Menu.clic != "surface sur 4 chemins" &&
  • Menu.clic != "surface sur 2 chemins" && Menu.clic != "joindre 2 chemins" &&
  • Menu.clic != "extruder un chemin" && Menu.clic != "révolution d'un chemin" &&
  • (queFautIlDessiner == co.nePasRedessinerLesSurfaces ||
  • queFautIlDessiner == co.dessinerLesSurfacesETlesRemplir ||
  • queFautIlDessiner == co.dessinerLesSurfacesETnePasLesRemplir ))
  • LesLignes.dessiner(g1);
  • ;
  • g2.drawImage(Imagecachée1,0,0,this);
  • toutActualiser = false;
  • }
  • public void update(Graphics g)
  • {
  • if(ilFaudraActualiser)
  • raffraîchir(co.dessinerLesSurfacesETnePasLesRemplir);
  • if(toutActualiser || Menu.actualiser)
  • raffraîchir(co.dessinerLesSurfacesETlesRemplir);
  • toutActualiser = false;
  • Menu.actualiser = false;
  • if(!Menu.tournerLaCaméra)
  • {
  • if(Menu.changerVue)
  • Grille.réorienter();
  • if(Menu.supprimer)
  • {
  • LesSurfaces.supprimerLesSurfacesEnPointillé();
  • LesLignes.supprimerLesLignesEnPointillé();
  • Menu.supprimer = false;
  • Menu.sélectionner = false;
  • }
  • if(Menu.déplacer)
  • {
  • LesSurfaces.déplacerLesSurfacesEnPointillé();
  • // LesLignes.déplacerLesLignesEnPointillé();
  • }
  • if(Menu.actualiserLaGrille)
  • {
  • raffraîchir(co.dessinerLesSurfacesETlesRemplir);
  • Menu.actualiserLaGrille = false;
  • }
  • g2.drawImage(Imagecachée1,0,0,this);
  • if(Menu.joindreChemins)
  • {
  • if(sélectionner.lignes(2))
  • LesLignes.joindre(sélectionner.ligne1,sélectionner.ligne2);
  • if(sélectionner.redessinerLesLignes)
  • raffraîchir(co.nePasRedessinerLesSurfaces);
  • LesLignes.dessiner(g2);
  • }
  • if(Menu.dessinDuneLigne && !Menu.dérouler)
  • if(sélectionner.leDessinDuneLigne(Menu.clic,g2))
  • raffraîchir(co.dessinerLesSurfacesETlesRemplir);
  • if(Menu.dessinDuneSurface && !Menu.dérouler)
  • {
  • if(!sélectionner.leDessinDuneSurface(Menu.clic,g2))
  • {
  • if(sélectionner.redessinerLesLignes)
  • raffraîchir(co.nePasRedessinerLesSurfaces);
  • LesLignes.dessiner(g2);
  • }
  • }
  • if(Menu.dessinDunVolume && !Menu.dérouler)
  • {
  • if(!sélectionner.leDessinDunVolume(Menu.clic,g2))
  • {
  • if(sélectionner.redessinerLesLignes)
  • raffraîchir(co.nePasRedessinerLesSurfaces);
  • }
  • }
  • if(Menu.sélectionner)
  • if(sélectionner.rectangle(g2))
  • raffraîchir(co.dessinerLesSurfacesETlesRemplir);
  • if(Menu.afficherCurseur)
  • E.dessinerCurseur(g2);
  • if(Menu.tournerLaGrille || Menu.déplacerGrille)
  • Grille.dessiner(g2);
  • if(Menu.dérouler)
  • Menu.dessiner(g2);
  • g.drawImage(Imagecachée2,0,0,this);
  • }
  • else
  • {
  • if(Menu.dérouler)
  • {
  • Menu.dessiner(g2);
  • g.drawImage(Imagecachée2,0,0,this);
  • }
  • else
  • g.drawImage(Imagecachée1,0,0,this);
  • }
  • g.setColor(Color.white);
  • if(Menu.actualiser)
  • repaint();
  • /*
  • g.drawString(sélectionner.volumeCourant.hauteur+"",10,30);
  • g.drawString(PointCourant.coordEcran.x+","+PointCourant.coordEcran.y,10,50);
  • g.drawString(temp.x+","+temp.y+","+temp.z,10,10);
  • //surfaceCourante.dessiner(g);
  • /*int s;
  • for(int i=0;i<LesSurfaces.nbEléments;i++)
  • {
  • s = ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.y,
  • LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.y,
  • PointCourant.coordEcran.x,PointCourant.coordEcran.y);
  • if(s == ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.y,
  • LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.y,
  • PointCourant.coordEcran.x,PointCourant.coordEcran.y) &&
  • s == ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.y,
  • LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.y,
  • PointCourant.coordEcran.x,PointCourant.coordEcran.y) &&
  • s == ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.y,
  • LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.x,
  • LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.y,
  • PointCourant.coordEcran.x,PointCourant.coordEcran.y))
  • {
  • x[0] = LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.x;
  • y[0] = LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.y;
  • x[1] = LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.x;
  • y[1] = LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.y;
  • x[2] = LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.x;
  • y[2] = LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.y;
  • x[3] = LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.x;
  • y[3] = LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.y;
  • g.setColor(Color.red);
  • g.fillPolygon(x,y,4);
  • g.setColor(Color.white);
  • g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][0]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][0]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][0]].z,10,10);
  • g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][1]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][1]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][1]].z,10,30);
  • g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][2]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][2]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][2]].z,10,50);
  • g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][3]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][3]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][3]].z,10,70);
  • g.drawString((float)LesSurfaces.barycentre[i][0].x+","+(float)LesSurfaces.barycentre[i][0].y+","+(float)LesSurfaces.barycentre[i][0].z,10,90);
  • }
  • }*/
  • }
  • }
//classe principale

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.lang.Math;
import java.lang.Thread;
import java.lang.System;
import java.util.*;

public class go extends Applet implements Runnable
{
 Image ADEFINIR;
 MediaTracker myTracker=new MediaTracker(this);
 //Toolkit T;
 //tools t;
 Graphics g1,g2,g3;
 Font F = new Font("Courier",1,14);
 Image Imagecachée1,Imagecachée2,Imagecachée3,palette;
 MemoryImageSource M = null;
 Thread thisThread = null;
 espace E = new espace();
 menu Menu = new menu(E);
 MesConstantes co = new MesConstantes();
 points LesPoints = new points();
 fenêtre f = new fenêtre(Menu,E);
 lignes LesLignes = new lignes(E);
 surfaces LesSurfaces = new surfaces(Menu,E);
 volumes LesVolumes = new volumes(LesSurfaces,E);
 grille Grille = new grille(E,Menu,LesLignes,LesSurfaces);
 sélection sélectionner;
 boolean ilyaDesSurfaces = false,
         toutActualiser = true,
         actualiserLaGrille = false,
         ilFaudraActualiser;
 int x[],y[];
 ligne ligneCourante,ligneCourante1,ligneCourante2,ligneCourante3,ligneCourante4,ligneCourante5,ligneCourante6,ligneCourante7,L1;
 surface surfaceCourante;
 volume volumeCourant;
 point temp,PointCourant;
 R2int pointCourant;
 outils ou = new outils();

 public void init()
 {
  LesSurfaces.initialiser(this);
  palette = getImage(getDocumentBase(),"palette.jpg");
  myTracker.addImage(palette,0);
  try{myTracker.waitForID(0);}
  catch (InterruptedException e){System.err.println ("Erreur : " + e);}
  f.palette = palette;
  f.chargerLaPalette();
  x = new int[4];
  y = new int[4];

  setBackground( Color.black );
  Imagecachée1 = createImage(co.largeurEcran,co.hauteurEcran);
  g1 = Imagecachée1.getGraphics();
  Imagecachée2 = createImage(co.largeurEcran,co.hauteurEcran);
  g2 = Imagecachée2.getGraphics();
  Imagecachée3 = createImage(co.largeurEcran,co.hauteurEcran);
  g3 = Imagecachée3.getGraphics();
  g2.setFont(F);
  sélectionner = new sélection(f,Menu,LesLignes,LesSurfaces,LesVolumes,E);
  Menu.afficherGrille = true;
 /* Point P = new Point(10,10);
  setCursor(t.createCustomCursor(ADEFINIR,P," "));*/
  thisThread = new Thread(this);
  thisThread.start();
 }

 public void start(){thisThread.resume();}
 public void stop(){if (thisThread.isAlive())thisThread.suspend();}
 public void run(){repaint();}

/* public void mousePressed(MouseEvent e)
 {
  if(!((e.getModifiers() & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK))
  {
   Menu.sélectionner = false;
   Menu.clic = "";
  }
 }
 */

 public synchronized boolean handleEvent(Event e)
 {
  E.AncienPointCourant = PointCourant;
  E.ancienPointCourant = pointCourant;
  if(e.x != 0 || e.y != 0)
   Menu.pointCourant = pointCourant = new R2int(e.x,e.y);
  Menu.positionSouris();
  sélectionner.PointCourant = PointCourant = new point(co.écran,pointCourant,E);
  if(!Menu.tournerLaCaméra &&
     (!Menu.ignorerLeClic &&
      !Menu.déplacerCaméra &&
      !Menu.tournerLaGrille &&
      !Menu.sélectionner &&
      !Menu.zoom &&
      Menu.clic != "surface sur 4 chemins" &&
      Menu.clic != "surface sur 2 chemins" &&
      Menu.clic != "extruder un chemin" &&
      Menu.clic != "révolution d'un chemin" &&
      !(Menu.clic == "cylindre" )))
  {
   if(Menu.accrocherGrille && !Menu.déplacerGrille && !Menu.joindreChemins)
   {
    Grille.accrocher(PointCourant);
    sélectionner.PointCourant = PointCourant = new point(co.travail,PointCourant.coordPlanDeTravail,E);
   }

   if(Menu.accrochage && !Menu.centreRotation)
   {
    LesLignes.PointCourant = PointCourant;
    temp = LesLignes.sélectionnerPoint();
    if(temp != null)
     PointCourant = new point(co.espace,temp,E);
   }
   else
    if(Menu.centreRotation)
    {
     ilFaudraActualiser = true;
     toutActualiser = sélectionner.unPoint();
     if(toutActualiser)
      E.pointVu = sélectionner.résultatP;
     PointCourant = sélectionner.résultatP;
    }
    else
     if(Menu.déplacerGrille)
     {
      ilFaudraActualiser = true;
      toutActualiser = sélectionner.unPoint();
      if(toutActualiser)
       E.originePlanDeTravailtemp = E.originePlanDeTravail;
      E.originePlanDeTravail = sélectionner.résultatP;
     }
  }
  Menu.ignorerLeClic = false;
  LesLignes.pointCourant = E.pointCourant = PointCourant.coordEcran;
  f.PointCourant = LesLignes.PointCourant = E.PointCourant = PointCourant;

  switch (e.id)
  {
   case Event.MOUSE_MOVE:
    if(!Menu.dessinDunElément && !Menu.centreRotation && !Menu.déplacerGrille &&
       !Menu.sélectionner && !Menu.joindreChemins)
     sélectionner.nombreDePointsCliqués = 0;
    break;

   case Event.MOUSE_DOWN:
    break;

   case Event.MOUSE_DRAG:
    if(Menu.tournerLaCaméra)
    {
     E.tournerCamera();
     ilFaudraActualiser = true;
     toutActualiser = false;
    }
    else
     if(Menu.tournerLaGrille)
     {
      E.tournerGrille();
      actualiserLaGrille = true;
     }
     else
      if(Menu.déplacerCaméra)
      {
       E.déplacerCaméra();
       ilFaudraActualiser = true;
       toutActualiser = false;
      }
      else
       if(Menu.zoom)
       {
        E.zoom();
        ilFaudraActualiser = true;
        toutActualiser = false;
       }
       else
        if(Menu.déplacerGrille)
         actualiserLaGrille = true;
    break;

   case Event.MOUSE_UP:
    sélectionner.clicUp = true;
    toutActualiser = ilFaudraActualiser;
    ilFaudraActualiser = false;
    if(Menu.dessinDunElément || Menu.centreRotation || Menu.déplacerGrille ||
       Menu.sélectionner || Menu.joindreChemins)
     sélectionner.nombreDePointsCliqués++;
    if(Menu.dérouler)
    {
     if(f.isVisible())
      f.afficher();
     Menu.dessiner(g2);
     Menu.enregistrerClic();
     if(Menu.ignorerLeClic && Menu.dessinDunElément)
     {
      sélectionner.nombreDePointsCliqués--;
      sélectionner.clicUp = false;
      Menu.ignorerLeClic = false;
     }
    }
    break;
   default:
    return false;
   }
  if(Menu.sortie)
   sélectionner.clicUp = false;
  Menu.sortie = false;
  repaint();
  return true;
 }

 public void raffraîchir(int queFautIlDessiner)
 {
  g1.clearRect(0,0,co.largeurEcran,co.hauteurEcran);

  if(Menu.afficherLesSurfaces && queFautIlDessiner != co.nePasRedessinerLesSurfaces)
   LesSurfaces.Dessiner(g1);
;

  if(!ilFaudraActualiser && (!Menu.tournerLaGrille && Menu.afficherGrille && !Menu.déplacerGrille ||
     (Menu.clic == "surface sur 4 chemins" || Menu.clic == "surface sur 2 chemins" ||
     Menu.clic == "joindre 2 chemins" || Menu.clic == "extruder un chemin" ||
     Menu.clic == "révolution d'un chemin") && Menu.afficherGrille))
   Grille.dessiner(g1);
;

  if(Menu.afficherLesLignes && Menu.clic != "surface sur 4 chemins" &&
     Menu.clic != "surface sur 2 chemins" && Menu.clic != "joindre 2 chemins" &&
     Menu.clic != "extruder un chemin" && Menu.clic != "révolution d'un chemin" &&
    (queFautIlDessiner == co.nePasRedessinerLesSurfaces ||
     queFautIlDessiner == co.dessinerLesSurfacesETlesRemplir ||
     queFautIlDessiner == co.dessinerLesSurfacesETnePasLesRemplir ))
   LesLignes.dessiner(g1);
;
  g2.drawImage(Imagecachée1,0,0,this);
  toutActualiser = false;
 }

 public void update(Graphics g)
 {
  if(ilFaudraActualiser)
   raffraîchir(co.dessinerLesSurfacesETnePasLesRemplir);

  if(toutActualiser || Menu.actualiser)
   raffraîchir(co.dessinerLesSurfacesETlesRemplir);

  toutActualiser = false;
  Menu.actualiser = false;

  if(!Menu.tournerLaCaméra)
  {
   if(Menu.changerVue)
    Grille.réorienter();

   if(Menu.supprimer)
   {
    LesSurfaces.supprimerLesSurfacesEnPointillé();
    LesLignes.supprimerLesLignesEnPointillé();
    Menu.supprimer = false;
    Menu.sélectionner = false;
   }

   if(Menu.déplacer)
   {
    LesSurfaces.déplacerLesSurfacesEnPointillé();
//   LesLignes.déplacerLesLignesEnPointillé();
   }

  if(Menu.actualiserLaGrille)
  {
   raffraîchir(co.dessinerLesSurfacesETlesRemplir);
   Menu.actualiserLaGrille = false;
  }

  g2.drawImage(Imagecachée1,0,0,this);

  if(Menu.joindreChemins)
  {
   if(sélectionner.lignes(2))
    LesLignes.joindre(sélectionner.ligne1,sélectionner.ligne2);
   if(sélectionner.redessinerLesLignes)
    raffraîchir(co.nePasRedessinerLesSurfaces);
   LesLignes.dessiner(g2);
  }

  if(Menu.dessinDuneLigne && !Menu.dérouler)
   if(sélectionner.leDessinDuneLigne(Menu.clic,g2))
    raffraîchir(co.dessinerLesSurfacesETlesRemplir);

  if(Menu.dessinDuneSurface && !Menu.dérouler)
  {
   if(!sélectionner.leDessinDuneSurface(Menu.clic,g2))
   {
    if(sélectionner.redessinerLesLignes)
     raffraîchir(co.nePasRedessinerLesSurfaces);
    LesLignes.dessiner(g2);
   }
  }

  if(Menu.dessinDunVolume && !Menu.dérouler)
  {
   if(!sélectionner.leDessinDunVolume(Menu.clic,g2))
   {
    if(sélectionner.redessinerLesLignes)
     raffraîchir(co.nePasRedessinerLesSurfaces);
   }
  }

  if(Menu.sélectionner)
   if(sélectionner.rectangle(g2))
    raffraîchir(co.dessinerLesSurfacesETlesRemplir);

  if(Menu.afficherCurseur)
   E.dessinerCurseur(g2);

  if(Menu.tournerLaGrille || Menu.déplacerGrille)
   Grille.dessiner(g2);

  if(Menu.dérouler)
   Menu.dessiner(g2);

  g.drawImage(Imagecachée2,0,0,this);
}
else
{
  if(Menu.dérouler)
  {
   Menu.dessiner(g2);
   g.drawImage(Imagecachée2,0,0,this);
  }
  else
   g.drawImage(Imagecachée1,0,0,this);
}
  g.setColor(Color.white);
   if(Menu.actualiser)
    repaint();
/*
  g.drawString(sélectionner.volumeCourant.hauteur+"",10,30);
  g.drawString(PointCourant.coordEcran.x+","+PointCourant.coordEcran.y,10,50);
  g.drawString(temp.x+","+temp.y+","+temp.z,10,10);
//surfaceCourante.dessiner(g);
/*int s;
for(int i=0;i<LesSurfaces.nbEléments;i++)
{
 s = ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.y,
            LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.y,
            PointCourant.coordEcran.x,PointCourant.coordEcran.y);
 if(s == ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.y,
            LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.y,
            PointCourant.coordEcran.x,PointCourant.coordEcran.y) &&
    s == ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.y,
            LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.y,
            PointCourant.coordEcran.x,PointCourant.coordEcran.y) &&
    s == ou.angle(LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.y,
            LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.x,
            LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.y,
            PointCourant.coordEcran.x,PointCourant.coordEcran.y))
 {
  x[0] = LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.x;
  y[0] = LesSurfaces.sommet[LesSurfaces.élément[i][0]].coordEcran.y;
  x[1] = LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.x;
  y[1] = LesSurfaces.sommet[LesSurfaces.élément[i][1]].coordEcran.y;
  x[2] = LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.x;
  y[2] = LesSurfaces.sommet[LesSurfaces.élément[i][2]].coordEcran.y;
  x[3] = LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.x;
  y[3] = LesSurfaces.sommet[LesSurfaces.élément[i][3]].coordEcran.y;
  g.setColor(Color.red);
  g.fillPolygon(x,y,4);
  g.setColor(Color.white);
  g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][0]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][0]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][0]].z,10,10);
  g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][1]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][1]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][1]].z,10,30);
  g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][2]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][2]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][2]].z,10,50);
  g.drawString((float)LesSurfaces.orientation[LesSurfaces.élément[i][3]].x+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][3]].y+","+(float)LesSurfaces.orientation[LesSurfaces.élément[i][3]].z,10,70);
  g.drawString((float)LesSurfaces.barycentre[i][0].x+","+(float)LesSurfaces.barycentre[i][0].y+","+(float)LesSurfaces.barycentre[i][0].z,10,90);
      }
}*/
 }
}

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • appartient.java
  • bouton.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier615 octets
  • dessin3D.dskTélécharger ce fichier [Réservé aux membres club]2 109 octets
  • dessin3D.jprTélécharger ce fichier [Réservé aux membres club]2 790 octets
  • dessin3D.jpr.localTélécharger ce fichier [Réservé aux membres club]781 octets
  • espace.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier10 231 octets
  • fenjtre.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier38 456 octets
  • go.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier13 103 octets
  • grille.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 153 octets
  • heapsort.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 128 octets
  • ligne.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier15 241 octets
  • lignes.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier6 059 octets
  • menu.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier10 596 octets
  • MesCalculs.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 369 octets
  • MesConstantes.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier942 octets
  • NouveauxPoints.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 536 octets
  • outils.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 709 octets
  • poing.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 875 octets
  • poingAdjacent.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier156 octets
  • point.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier10 364 octets
  • points.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 121 octets
  • R2int.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier702 octets
  • R3double.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier847 octets
  • saisie.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier8 325 octets
  • silection.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier15 512 octets
  • surface.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier15 163 octets
  • surfaces.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier15 932 octets
  • tools.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier82 octets
  • triangulation.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 326 octets
  • volume.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier12 040 octets
  • volumes.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier452 octets
  •   compilation!
    • appartient.classTélécharger ce fichier [Réservé aux membres club]1 501 octets
    • bouton.classTélécharger ce fichier [Réservé aux membres club]994 octets
    • espace.classTélécharger ce fichier [Réservé aux membres club]7 556 octets
    • fenjtre.classTélécharger ce fichier [Réservé aux membres club]21 351 octets
    • go!.htmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier168 octets
    • go.classTélécharger ce fichier [Réservé aux membres club]9 745 octets
    • grille.classTélécharger ce fichier [Réservé aux membres club]4 572 octets
    • heapsort.classTélécharger ce fichier [Réservé aux membres club]1 116 octets
    • index.htmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier344 octets
    • ligne.classTélécharger ce fichier [Réservé aux membres club]12 876 octets
    • lignes.classTélécharger ce fichier [Réservé aux membres club]5 408 octets
    • menu.classTélécharger ce fichier [Réservé aux membres club]7 392 octets
    • MesCalculs.classTélécharger ce fichier [Réservé aux membres club]255 octets
    • MesConstantes.classTélécharger ce fichier [Réservé aux membres club]1 471 octets
    • NouveauxPoints.classTélécharger ce fichier [Réservé aux membres club]4 537 octets
    • outils.classTélécharger ce fichier [Réservé aux membres club]4 766 octets
    • palette.jpgTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 140 octets
    • poing.classTélécharger ce fichier [Réservé aux membres club]2 000 octets
    • poingAdjacent.classTélécharger ce fichier [Réservé aux membres club]352 octets
    • point.classTélécharger ce fichier [Réservé aux membres club]7 022 octets
    • points.classTélécharger ce fichier [Réservé aux membres club]1 512 octets
    • R2int.classTélécharger ce fichier [Réservé aux membres club]1 264 octets
    • R3double.classTélécharger ce fichier [Réservé aux membres club]1 432 octets
    • RangerFacettes.classTélécharger ce fichier [Réservé aux membres club]1 445 octets
    • RangerNorme.classTélécharger ce fichier [Réservé aux membres club]861 octets
    • RangerTriangles.classTélécharger ce fichier [Réservé aux membres club]1 304 octets
    • saisie.classTélécharger ce fichier [Réservé aux membres club]6 252 octets
    • silection.classTélécharger ce fichier [Réservé aux membres club]12 299 octets
    • silectionner.classTélécharger ce fichier [Réservé aux membres club]2 908 octets
    • surface.classTélécharger ce fichier [Réservé aux membres club]12 600 octets
    • surfaces.classTélécharger ce fichier [Réservé aux membres club]13 395 octets
    • triangulation.classTélécharger ce fichier [Réservé aux membres club]2 104 octets
    • volume.classTélécharger ce fichier [Réservé aux membres club]7 709 octets
    • volumes.classTélécharger ce fichier [Réservé aux membres club]896 octets
  •   exemple
    • bouton.classTélécharger ce fichier [Réservé aux membres club]994 octets
    • espace.classTélécharger ce fichier [Réservé aux membres club]7 556 octets
    • fenjtre.classTélécharger ce fichier [Réservé aux membres club]21 191 octets
    • go!.htmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier167 octets
    • go.classTélécharger ce fichier [Réservé aux membres club]27 375 octets
    • grille.classTélécharger ce fichier [Réservé aux membres club]4 576 octets
    • heapsort.classTélécharger ce fichier [Réservé aux membres club]1 116 octets
    • index.htmlTélécharger ce fichier [Réservé aux membres club]Voir ce fichier345 octets
    • ligne.classTélécharger ce fichier [Réservé aux membres club]13 164 octets
    • lignes.classTélécharger ce fichier [Réservé aux membres club]5 408 octets
    • menu.classTélécharger ce fichier [Réservé aux membres club]7 350 octets
    • MesConstantes.classTélécharger ce fichier [Réservé aux membres club]1 471 octets
    • NouveauxPoints.classTélécharger ce fichier [Réservé aux membres club]4 537 octets
    • outils.classTélécharger ce fichier [Réservé aux membres club]4 766 octets
    • palette.jpgTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 142 octets
    • poing.classTélécharger ce fichier [Réservé aux membres club]2 000 octets
    • poingAdjacent.classTélécharger ce fichier [Réservé aux membres club]352 octets
    • point.classTélécharger ce fichier [Réservé aux membres club]7 022 octets
    • points.classTélécharger ce fichier [Réservé aux membres club]1 512 octets
    • R2int.classTélécharger ce fichier [Réservé aux membres club]1 264 octets
    • RangerFacettes.classTélécharger ce fichier [Réservé aux membres club]1 445 octets
    • RangerNorme.classTélécharger ce fichier [Réservé aux membres club]861 octets
    • saisie.classTélécharger ce fichier [Réservé aux membres club]6 178 octets
    • silection.classTélécharger ce fichier [Réservé aux membres club]12 303 octets
    • surface.classTélécharger ce fichier [Réservé aux membres club]12 524 octets
    • surfaces.classTélécharger ce fichier [Réservé aux membres club]13 395 octets
    • triangulation.classTélécharger ce fichier [Réservé aux membres club]2 104 octets
    • volume.classTélécharger ce fichier [Réservé aux membres club]7 944 octets
    • volumes.classTélécharger ce fichier [Réservé aux membres club]896 octets

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de exbutterfly le 23/09/2004 16:20:25

Salut,
Ce que tu as fait m'intéresse. Je regarde en détail et je te tiens au courant pour voir si ça vaut le coup de continuer cette base là.
a+

signaler à un administrateur
Commentaire de artichaud le 24/09/2004 09:09:42

autant te dire tout de suite ke si tu veux faire de la 3D, vaut mieux ke tu passes par directX et cie

En faisant ce prog, je me suis rendu compte ke je suis à 100 lieues du niveau de programmation des grosses boites...

signaler à un administrateur
Commentaire de exbutterfly le 29/09/2004 15:32:44

Après survol du code, j'ai été horrifié ! Tu réinventes la roue.
Tu as raison pour faire de la 3D mieux vaut utilisé DirectX ou OpenGL.
J'avais trouvé l'api java 3D qui fourni une interface pour faire de la 3D sous OpenGL mais c'est beaucoup trop compliqué.

signaler à un administrateur
Commentaire de artichaud le 29/09/2004 20:02:37

ouais ben la roue, je l'ai faite en bois... alors k'elle existe déjà en version pneumatik
si tu es horrifié par la lecture, n'essaye pas de décripter mes autres sources... à c