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ôté, cette source (avec ses noms de fonctions relativement explicites) c'est kindergarten
pour faire de la 3D, va falloir te farcir les api. Mais en collectionnant les exemples en java3D, tu devrais arriver à kkch...
Mais c'est vrai ke le but initial de mes aventures dans la conception de ces sources était de proposer l'interface d'un moteur 3D en francais et facile d'utilisation. Seulement, comme je n'ai pas réussi à faire kkch de performant (il faudrait être toute une équipe de programmeurs), et ben j'ai laissé tombé
N'empêche, les lignes de codes (non l'interface) qui font tourner java3D ne doivent pas être plus faciles de lecture non plus!

signaler à un administrateur
Commentaire de mougen le 14/04/2005 15:12:57

Ce truc a l'air intéressant, mais j'ai toujours pas pu le lancer. C'est pas très malin d'avoir mis des accents dans les noms de variables, de classes etc...
Là, je suis en train de me faire c**** à faire des find/replace pour retrouver une certaine cohérence...

signaler à un administrateur
Commentaire de zekabyle le 07/04/2008 21:52:23

quand tu compiles tu mets l'option -encoding avec le bon codage et il n'y aura plus de warning sur les accents

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Dessin Java [ par christouilhe ] Bonjour à vous,j'ai une question à vous poser ... Je suis tout nouveau, tout beau, tout neuf dans le monde du dessin en Java ...Dans un premier temps, Probléme de rafraichisement [ par pekee38 ] Bonjour a tous et toutes .Je m'en remet a vous car j'ai un petit probl&#233;me.Je suis entraint de d&#233;velopper une application permettant de dessi probleme Dessin Java2D [ par fdcj ] Bonjour, je souhaite r&#233;aliser un sudoku. Pour l'instant, j'ai cr&#233;&#233; ma grille de jeu avec une JTable mais j'aimerai rajouter par dessus dessin vectoriel [ par tuctuc2 ] bonjour a tous,dans le cadre de mon pfe je cherche une api ou une methode en java qui realise la fonctionnalite suivante:avoir un bouton que lorsqu'on Disparition de dessin dans un JPanel [ par koalish ] bien le Bonjour &#224; tous !!!J'ai cr&#233;&#233; un JPanel avec comme arri&#232;re plan une carte de la Belgique et j'ai une m&#233;thode qui me per dessiner un trait pixel par pixel [ par PAFounet ] Bonsoir tout le monde, désolé de vous déranger mais j'ai un pitit problème et j'espère que vous pourrez m'aider à le résoudre... Alors voila, je me su Transformer un programme java en applet [ par sylsau ] Bonjour, J'ai fait une petit programme JAVA utilisant SWING. Voici un screenshot de ce petit programme : http://www.webmaitrise.com/utilitaire.png [Graphics2D] Dessin courbe lissée à N points de contrôle [ par cruachan ] Bonjour, Dans le cadre d'un projet de fin d'&#233;tude, je dois mod&#233;liser une route en 2D se calquant sur une carte existante. Pour se fair dessiner une image [ par qhhu ] Salut J'ai un probleme pour dessiner une image avec java.awt.Graphics2D ...J'utilise la m&#233;thode&nbsp; public abstract boolean drawImage(Image im, Dessin String [ par Horfee ] J'aimerais savoir s'il y a un moyen simple (&lt;=&gt;sans avoir a developper une classe DrawableString par exemple) qui permettrait de dessiner une ch


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.