IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

ondes sous java


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Par défaut ondes sous java
    bonjour je dois simuler le déplacement d'une onde dont l'équation dépend a la fois de x mais aussi de t (temps).je parvient a tracer la courbes pour un t fixé mais je ne sais pas comment procéder pour effacer chaque courbes puis retracer celle pour le t suivant et ainsi donner l'illusion de la propagation de l'onde.jaimerais savoir si quelqqun peut maider a ce sujet .merci.

  2. #2
    Membre confirmé Avatar de ForgetTheNorm
    Homme Profil pro
    Docteur en informatique
    Inscrit en
    Novembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Docteur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 133
    Par défaut
    Citation Envoyé par macgyver9 Voir le message
    bonjour je dois simuler le déplacement d'une onde dont l'équation dépend a la fois de x mais aussi de t (temps).je parvient a tracer la courbes pour un t fixé mais je ne sais pas comment procéder pour effacer chaque courbes puis retracer celle pour le t suivant et ainsi donner l'illusion de la propagation de l'onde.jaimerais savoir si quelqqun peut maider a ce sujet .merci.
    N'hésite pas à donner plus de précision sur ton code, qu'on voit ce que tu utilises...

  3. #3
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Par défaut
    //voila la classe qui crée un objet de type equation,qui corespond a lequation de l'onde.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
     
    import java.util.Vector;
     
     
    public class Eq {
        double a,x0;            //des paramétres
        double x;                 //l'inconnu
        double t=0;               //le temps initialiser a 0
        Vector<Point> Vect;    //un tableau de point qui comporte tous les 
                                           // points d'une courbe pour un t donné
     
     
            public Eq(){                                   // le constructeur qui instance 
                                                                       //un tableau dynamique de 
                                                                       points
            Vect= new Vector<Point>();        
        }
     
        public void calculer(double x,double t){    //methode permettant de
                                                                    calculer l'ordonnée dun point
                                                                     a partir de son abscisse
                                                                     et de l'instant t et rangé                                                                point dan le vector
     
            a=-5;
            x0=-5;
     
            double xi=(x-x0+t)/2;
            double tau=(x-x0-t)/2;
            double S= 4*Math.atan(Math.exp(a*xi+tau/a));
            Point p=new Point(x,S);
            Vect.add(p);
     
        }
     
     
     
     
    }
    // la classe point
     
    public class Point {
            double x;
            double y;
     
            public Point(double x,double y){
                this.x=x;
                this.y=y;
     
            }
     
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    // ma fenétre avec un graph
     
    import java.awt.BorderLayout;
    import java.awt.Component;
     
    import javax.swing.*;
     
     
    public class Vu {
        Eq eq1;
        Graph gr;
        public Vu(Eq eq1){
            this.eq1=eq1;
            gr=new Graph(eq1);
            JFrame f;
            f= new JFrame("Solitons");
            f.setSize(700,700);
            f.setLayout(new BorderLayout());
            f.add(gr,BorderLayout.CENTER);
     
     
     
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setResizable(false);
            f.setVisible(true);
        }
     
        public static void main(String[]args){
            Eq eq1 = new Eq();
            Vu v = new Vu(eq1);
        }
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    // mon canvas
     
    import java.awt.*;
     
     
    public class Graph extends Canvas{
        Eq eq1;                // le canvas connait léquation
        Listener2 c;           //c mon mouselistener pour choisir mon echelle
     
            public Graph(Eq eq1){
            this.eq1=eq1;
            c=new Listener2(this,eq1);
            this.addMouseListener(c);
        }
     
    public void paint(Graphics g){
            //je dessine les axe
            g.setColor(Color.RED);
            g.drawLine(0,getHeight()/2,getWidth(),getHeight()/2);
            g.drawLine(getWidth()/2,0,getWidth()/2,getHeight());
            int i=0;
     
            g.setColor(Color.BLACK);
            for(i=getWidth()/2+34;i<=getWidth();i+=34){
                g.drawLine(i,0,i,getHeight());
            }
            for(i=getWidth()/2-34;i>=0;i-=34){
                g.drawLine(i,0,i,getHeight());
            }
     
            for(i=(getHeight()/2)-34;i>=0;i-=34){
                g.drawLine(0,i,getWidth(),i);
            }
     
            for(i=(getHeight()/2)+34;i<=getHeight();i+=34){
                g.drawLine(0,i,getWidth(),i);
            }
     
            g.setColor(Color.BLUE);
            //je parcours le graphique en largeur et je rempli mon tableau de  
                    //point
            for(i=0;i<=getWidth();i++){
                eq1.calculer(i,eq1.t);
                        //je trace tous les point du tableau       g.drawLine(doubleToPixX(eq1.Vect.get(i).x),doubleToPixY(eq1.Vect.get(i).y),doubleToPixX(eq1.Vect.get(i).x),doubleToPixY(eq1.Vect.get(i).y));
            }    
     
     
     
     
     
     
    }
        //fonctions permettant de convertir des pixel en double et inversemen par rapport a l'echelle choisit
     
        public static double pixToDoubleX(double e){
            return(double) (e-346)/34;
        }
     
        public static double pixToDoubleY(double e){
            return(double) (-e+335)/34;
        }
     
        public static int doubleToPixX(double e){
            return (int)(e*34)+346;
        }
     
        public static int doubleToPixY(double e){
            return (int)(-e*34)+335;
        }
     
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //mon écouteur souris pour créer mon echelles
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
     
     
    public class Listener2 extends MouseAdapter {
        Graph g;
        Eq eq1;
     
        public Listener2(Graph g,Eq e){
            this.g=g;
            this.eq1=e;
     
        }
     
        public void mouseClicked(MouseEvent e) {
            System.out.println(""+e.getX()+","+e.getY()+"  -  "+Graph.pixToDoubleX(e.getX())+","+Graph.pixToDoubleY(e.getY()));    
            eq1.x0=Graph.pixToDoubleX(e.getX());
     
        }
    }

    voila ca ne marche pas comme ca.ca me met une exception que je ne comprends pas.mon plan cest de créer un timer qui au bout dune demi seconde vide le tableau de point donc la courbe disparait et aussito incrémente le t de l'equation et trace la courbe pour le t suivant.si quelqun pouvait me dire si cé faisable ou si il ya plus simple .merci

  4. #4
    Membre confirmé Avatar de ForgetTheNorm
    Homme Profil pro
    Docteur en informatique
    Inscrit en
    Novembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Docteur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 133
    Par défaut
    1) Pour effacer ton graphique : trace un carré blanc de la taille du graphique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void paint(Graphics g){
           g.setColor(Color.WHITE);
           g.fillRect(0,0,g.getWidth(),g.getHeight());
            //je dessine les axe...
    Pour ton exception, quelle est-elle ?

  5. #5
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Par défaut
    non en fait il ya plus d'exeption mais ca ne me trace pas la courbe , juste quelque points.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/04/2006, 12h49
  2. Charger une DLL sous java
    Par mouzon dans le forum Général Java
    Réponses: 1
    Dernier message: 22/03/2006, 19h46
  3. [Date]Date sous Java != celle sous Access
    Par Cyborg289 dans le forum JDBC
    Réponses: 4
    Dernier message: 27/07/2005, 23h11
  4. [Système][Class-Path]cherche aide sous java pour fedoracore ou linux
    Par mickey hollywood dans le forum Général Java
    Réponses: 4
    Dernier message: 29/03/2005, 01h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo