Rechercher : dans
Par :

Java tracer une courbe

Dernière réponse le 12 aoû 2008 à 11:25:26 fasco, le 27 aoû 2006 à 17:52:17 
 Signaler ce message aux modérateurs

Bonjour j'ai crée un repere de R2 pour me permettre d'avoir les tarcés de mes coubes avec soit un applet soit un swing, mais mon grand probleme est que je n'arrive pas à tracer la la fonction f(x)=x² telle qu'elle passe à l'origine de mpon repere comment devrait-je utiliser la methode drawLine pour que cela marche?
ou bien devrait-je modifier ma fonction en lui imposant une translation une rotation...mais je sais vraiment pas comment m'y prendre aider moi.

Configuration: linux fedora core 4
jdk1.5_07

Meilleures réponses pour « java tracer une courbe » dans :
Représentation des courbes sous Matlab VoirLa fonction plot permet essentiellement de tracer des courbes sous Matlab. Dans cette astuce, nous allons essayer de détailler le fonctionnement de cette commande. Simple utilisation Vecteur Matrice Vecteur en fonction d'un autre Autres...
Supprimer totalement les traces de nos visites sur internet VoirAvec Internet Explorer Pour pouvoir supprimer les traces d'une ou plusieurs visites sur des sites, il existe (tout le monde le sait) EFFACER L'HISTORIQUE dans le menu outil sur internet explorer. Et bien sachez que parfois, il peut rester des...
Télécharger Java Runtime Environment VoirJava Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des personnes dans le monde entier, de calculer les intérêts de votre prêt immobilier ou de visualiser des images en 3D. Ces...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Java - Les packages VoirIntroduction aux packages La programmation Java consiste à créer des classes. Or, étant donné qu'un programme est généralement développé par une équipe de programmeurs, c'est-à-dire plusieurs personnes, le fait de concaténer (mettre bout à bout)...

1

hamzafes, le 29 aoû 2006 à 21:59:57

Salam,

si je comprend bien, vous voulez tracer la courbe de la fonction f(x)=x², et le pb qui se pose est que l'origine du repère pour drawLine(...) et en haut à gauche de l'écran, et vous vous voulez que l'origine soit au centre de l'écran (par exp) , si c'est ça ce que vous cherchez alors je vous propose ce qui suit:

1- pour dessiner un point selon le repère par defaut on utilisez drawLine(x,y,x,y) .
2-Le nouveau centre du repère est le point (x0,y0)
3- pour dessiner un point selon le nouveau repère utilisez drawLine(x0+x,y0+y,x0+x,y0+y)



Allah mo3ine

Répondre à hamzafes

2

nono55, le 3 avr 2008 à 09:29:40

Bonjour
je veux tracer la courbe de la fonction sinus x à partir du du langage java mais j'arrive pas.Je remercie toute personne pouvant maider.
merci

Répondre à nono55

5

hamzafes, le 29 mai 2008 à 22:58:29

Je sais pas vraiment où elle est la difficulté nono, mais comme même je te propose ceci:

int x, y; // n'utilise pas des doubles un pixel est repéré par deux entiers

for(x=100; x<300;x++)
{
y=(int)Math.sinus(x);
g.drawLine(x,y);

}

Répondre à hamzafes

6

hamzafes, le 29 mai 2008 à 23:00:10

En fait c'est : Math.sin est non pas sinus et g.drawLine(x,y,x,y);

Répondre à hamzafes

7

fifida, le 20 jun 2008 à 13:15:29
  • +1

Package grahee;



public class fonction {

public fonction() {}

public double ValeurY( double X )
{
return (Math.sin(X));
}

}
------------------------------------------------------------­------------------------------------------------------------­------------------------------------------
package grahee;


import javax.swing.*;
import javax.swing.border.*;
import java.awt.event.*;
import java.awt.*;
import java.lang.String.*;


public class AffichageCourbe extends JPanel implements MouseListener, MouseMotionListener
{

public int NombrePoints = 500;
public double PointA = -10.0;
public double PointB = 10.0;
private CourbeMath MaCourbe;
private int PointX[];
private int PointY[];
private int PointCurseur = 0;
private int XMaxRPixel;
private int XMinPixel;
private int YMaxRPixel;
private int YMinPixel;


public AffichageCourbe(int X0 , int Y0 , int Width , int Heigh)
{
addMouseListener(this);
addMouseMotionListener(this);
//initialisation des variables de dimensions
XMinPixel = X0;
YMinPixel = Y0;
XMaxRPixel = Width;
YMaxRPixel = Heigh;

setBorder(new LineBorder(new Color(0, 0, 0)));
setBackground(new Color(200, 200, 200));
setBounds(XMinPixel,YMinPixel,XMaxRPixel+XMinPixel+20,YMaxRP­ixel+YMinPixel+20);
MaCourbe = new CourbeMath(NombrePoints,PointA,PointB);
MiseEnValeur();
}

@Override
public void paintComponent( Graphics MonGraph )
{
super.paintComponent(MonGraph);
Afficher(MonGraph);
}

private void Afficher(Graphics MonGraph)
{
//m�thodes qui affiche les donn�es sur le panneau
MonGraph.setColor(new Color(51, 0, 255));
MonGraph.drawPolyline(PointX,PointY,NombrePoints);
MonGraph.setColor(new Color(0,150,0));
MonGraph.drawLine(PointX[PointCurseur],YMinPixel-20,PointX[PointCurseur],YMaxRPixel+YMinPixel+20);
MonGraph.drawLine(XMinPixel-20,PointY[PointCurseur],XMaxRPixel+YMinPixel+20,PointY[PointCurseur]);
MonGraph.drawString("("+MaCourbe.MesPointsX[PointCurseur]+";"+ MaCourbe.MesPointsY[PointCurseur]+")",PointX[PointCurseur]+10,PointY[PointCurseur]-11);

}

public void MiseAJour()
{
PointCurseur = 0;
MaCourbe = new CourbeMath(NombrePoints,PointA,PointB);
MiseEnValeur();
repaint();
}

private void MiseEnValeur()
{
PointX = new int[NombrePoints];
PointY = new int[NombrePoints];
for( int i = 0 ; i < NombrePoints ; i++)
{
PointX[i] = (int)(XMinPixel + ((i*XMaxRPixel) / (NombrePoints-1)));
PointY[i] = (int)( ( MaCourbe.YMax() - MaCourbe.MesPointsY[i] ) * YMaxRPixel / ( MaCourbe.YMax() - MaCourbe.YMin() ) ) + YMinPixel;
}
}

public void mousePressed(MouseEvent e)
{
PointCurseur = RecherchePointCurseur(e.getX());
repaint();
}

public void mouseDragged(MouseEvent e)
{
PointCurseur = RecherchePointCurseur(e.getX());
repaint();
}

public void mouseClicked(MouseEvent e){}

public void mouseReleased(MouseEvent e){}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

public void mouseMoved(MouseEvent e){}



private int RecherchePointCurseur( int MonPointX )
{
for( int i = 0 ; i < NombrePoints ; i++) if( PointX[i] >= MonPointX ) return i;
return NombrePoints-1;
}

---------------------------------------------------------------------------------------------------------------------------------------------
package grahee;


import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.lang.String.*;


public class AffichageResult extends JPanel
{

public JLabel NombrePoints;
public JLabel Bornes;

public AffichageResult(int X0 , int Y0 , int Width , int Heigh)
{
setBorder(new LineBorder(new Color(0, 0, 0)));
setBackground(new Color(200,200, 200));
//initialisation dimension
setBounds(X0,Y0,Width,Heigh);
setLayout(null);
Initialisation();
}

private void Initialisation()
{
//mise en place d'un container
NombrePoints = new JLabel("Nombre de points : <>");
Bornes = new JLabel("Bornes de Simulation : [ <> - <> ]");
add(NombrePoints);
add(Bornes);
NombrePoints.setBounds(10,10,800,20);
NombrePoints.setVisible(true);
Bornes.setBounds(10,40,800,20);
Bornes.setVisible(true);

}



}
------------------------------------------------------------------------------------------------------------------
package grahee;


import javax.swing.*;
import javax.swing.border.*;
import java.awt.event.*;
import java.awt.*;
import java.lang.String.*;


public class Courbe extends JFrame
{

//d�claration du panel d'affichage des courbes
AffichageCourbe MonAffichage;
AffichageResult MonAffichageResult;

public Courbe()
{
this.Initialise();
this.setVisible(true);
}

private void Initialise()
{
//mise en place d'un container
Container Content = this.getContentPane();

//on met la fen�tre en plein �cran
int width = (int)Toolkit.getDefaultToolkit().getScreenSize().width;
int heigh = (int)Toolkit.getDefaultToolkit().getScreenSize().height;
setBounds(0,0,width, heigh);
this.setResizable(false);
//on met en place le menu barre
JMenuBar MenuBar = new JMenuBar();
this.setJMenuBar(MenuBar);
JMenu Menu1 = new JMenu("Fichier");
JMenuItem Fonction = new JMenuItem("Importer une fonction", 2);
JMenuItem Quit = new JMenuItem("Quitter", 2);
MenuBar.add(Menu1);
Menu1.add(Fonction);
Menu1.addSeparator();
Menu1.add(Quit);

JMenu Menu2 = new JMenu("Syst�me");
JMenuItem Nb = new JMenuItem("Param�tres syst�mes", 2);
MenuBar.add(Menu2);
Menu2.add(Nb);

JMenu Menu3 = new JMenu("Param�tres Courbes");
JMenuItem Bornes = new JMenuItem("Bornes", 2);
MenuBar.add(Menu3);
Menu3.add(Bornes);

JMenu Menu4 = new JMenu("Simulation");
JMenuItem Expli = new JMenuItem("M�thode d'Euler explicite", 2);
JMenuItem Impli = new JMenuItem("M�thode d'Euler implicite", 2);
MenuBar.add(Menu4);
Menu4.add(Expli);
Menu4.add(Impli);

//gestion des menu barres
this.addWindowListener( new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e){
setVisible(false);
dispose();
System.exit(0);
}});

Quit.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}});

Nb.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
PSysteme();
}});

Bornes.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
PBornes();
}});

//mise en place du panneau principal
JPanel Affichage = new JPanel();
Affichage.setBorder(new LineBorder(new Color(0, 0, 0)));
Affichage.setBackground(new Color(255, 255, 204));
Affichage.setLayout(null);
Content.add(Affichage);

//initialisation des constantes de dimensionnement "affichage"
int X0 = 20;
int Y0 = 20;
int WidthC = width - 4*X0 - 5;
int HeighC = heigh - (int)(2*heigh/5);

//mise en place du panel
MonAffichage = new AffichageCourbe(X0,Y0,WidthC,HeighC);
Affichage.add(MonAffichage);

//initialisation des constantes de dimensionnement "resultat"
X0 = 20;
Y0 = Y0 + 60 + HeighC;
WidthC = width - (int)(width/5);
HeighC = (int)(2*heigh/5) - 145;

//mise en place du panel d'affichage des r�sultats
MonAffichageResult = new AffichageResult(X0,Y0,WidthC,HeighC);
Affichage.add(MonAffichageResult);
MonAffichageResult.NombrePoints.setText("Nombre de points : "+MonAffichage.NombrePoints);
MonAffichageResult.Bornes.setText("Bornes de Simulation : [ "+MonAffichage.PointA+" - "+MonAffichage.PointB+" ]");

}

private void PSysteme()
{
PSys ParamSys = new PSys(this,true,MonAffichage.NombrePoints);
ParamSys.setLocation(200,200);
ParamSys.show();
MonAffichage.NombrePoints = ParamSys.NombrePoints;
MonAffichageResult.NombrePoints.setText("Nombre de points : "+MonAffichage.NombrePoints);
MonAffichage.MiseAJour();
}

private void PBornes()
{
PBorne ParamBorne = new PBorne(this,true,MonAffichage.PointA,MonAffichage.PointB);
ParamBorne.setLocation(200,200);
ParamBorne.show();
MonAffichage.PointA = ParamBorne.PointA;
MonAffichage.PointB = ParamBorne.PointB;
MonAffichageResult.Bornes.setText("Bornes de Simulation : [ "+MonAffichage.PointA+" - "+MonAffichage.PointB+" ]");
MonAffichage.MiseAJour();
}

}




}
-------------------------------------------------------------------------------------------------


package grahee;



public class CourbeMath
{
public double MesPointsY[];
public double MesPointsX[];
public int NombrePoints;
private double Pas;
private double PointA;
private double PointB;
private fonction MaFonction;


public CourbeMath(int Nb , double A , double B)
{
NombrePoints = Nb;
MaFonction = new fonction();
PointA = A;
PointB = B;
Discretisation();
CalculPoints();
}

private void Discretisation()
{
Pas = (PointB - PointA ) / NombrePoints;
}

private void CalculPoints()
{
MesPointsY = new double[NombrePoints];
MesPointsX = new double[NombrePoints];

for(int i = 0 ; i < NombrePoints ; i++)
{
MesPointsX[i] = PointA+(i*Pas);
MesPointsY[i] = MaFonction.ValeurY(PointA+(i*Pas));
}
}

public double YMax()
{
double MonMax = MesPointsY[0];
for(int i = 1 ; i < NombrePoints ; i++) if( MesPointsY[i] > MonMax ) MonMax = MesPointsY[i];
return MonMax;
}

public double YMin()
{
double MonMin = MesPointsY[0];
for(int i = 1 ; i < NombrePoints ; i++) if( MesPointsY[i] < MonMin ) MonMin = MesPointsY[i];
return MonMin;
}

}
----------------------------------------------------------------------------------------------------
package grahee;


import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.JDialog;

public class PBorne extends JDialog
{

private JTextField TextA;
public double PointA;
private JTextField TextB;
public double PointB;


public PBorne(JFrame parent,boolean modal,double A,double B)
{
super(parent, modal);
PointA = A;
PointB = B;
Container contentPane = this.getContentPane();
JPanel panel1 = new JPanel();
panel1.setLayout(new FlowLayout(FlowLayout.CENTER));
contentPane.add(panel1, BorderLayout.SOUTH);
JPanel panel3 = new JPanel();
panel3.setLayout(new FlowLayout(FlowLayout.CENTER));
contentPane.add(panel3, BorderLayout.CENTER);
TextA = new JTextField(""+PointA,15);
TextB = new JTextField(""+PointB,15);
panel3.add(TextA);
panel3.add(TextB);
JButton okButton = new JButton("OK");
panel1.add(okButton);
JButton cancelButton = new JButton("Cancel");
panel1.add(cancelButton);

setTitle("Gestion des valeurs aux bornes");
pack();


cancelButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event)
{
dispose();
setVisible(false);
}
});

okButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event)
{
PointA = Double.parseDouble(TextA.getText());
PointB = Double.parseDouble(TextB.getText());
if( PointA >= PointB )
{
PointA = -10.0;
PointB = 10.0;
TextA.setText(""+PointA);
TextB.setText(""+PointB);
return;
}
dispose();
setVisible(false);
}
});

}




}
--------------------------------------------------------------
package grahee;


import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.JDialog;

public class PSys extends JDialog
{

private JTextField TextNombrePoints;
public int NombrePoints;


public PSys(JFrame parent,boolean modal,int NbPoints)
{
super(parent, modal);
NombrePoints = NbPoints;
Container contentPane = this.getContentPane();
JPanel panel1 = new JPanel();
panel1.setLayout(new FlowLayout(FlowLayout.CENTER));
contentPane.add(panel1, BorderLayout.SOUTH);
JPanel panel3 = new JPanel();
panel3.setLayout(new FlowLayout(FlowLayout.CENTER));
contentPane.add(panel3, BorderLayout.CENTER);
TextNombrePoints = new JTextField(""+NombrePoints,8);
panel3.add(TextNombrePoints);
JButton okButton = new JButton("OK");
panel1.add(okButton);
JButton cancelButton = new JButton("Cancel");
panel1.add(cancelButton);

setTitle("Gestion des param�tres syst�mes");
pack();


cancelButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event)
{
dispose();
setVisible(false);
}
});

okButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event)
{
NombrePoints = Integer.parseInt(TextNombrePoints.getText());
if( NombrePoints > 1000 || NombrePoints < 5 )
{
TextNombrePoints.setText("500");
return;
}
dispose();
setVisible(false);
}
});

}




}
----------------------------------------------------------------------------------------------
package grahee;


public class principal {

public principal() {}


public static void main(String[] args)
{
Courbe MaCourbe = new Courbe();
}

}

ces programme peuvent vous aider a dessiner sin x

Répondre à fifida

3

djamel, le 14 mai 2008 à 21:51:19

Bonjour. je ne sais pas comment interpreter les données d'un tableau sous forme de courbe sous java.
je remercie toute personne qui pourra m'aider.

Répondre à djamel

4

hamzafes, le 29 mai 2008 à 22:53:03

Plus de détails stp djamal

LLah m3ine

Répondre à hamzafes

11

 barabbas, le 12 aoû 2008 à 11:25:26

Malgré que ta question est entierement pas claire , je t'offre ce lien qui peux t'être utile:

http://www.javafr.com/codes/TRACER-COURBE-PARTIR-JTABLE_2183­3.aspx

c'est un exemple d'implementation en lgge java traçant une courbe a partir d'un JTable

esperant que ça répond à ta "question"??!!!

Répondre à barabbas

8

anonyme, le 6 jui 2008 à 16:44:26

Salam,



Voici quelques questions pour l'instant, si j'en ais d'autres je te les enverrais plus tard.

- Quelles sont les instructions qui permettent d'afficher trois boutons : Sin - Echelon - Sinc ?

- Quelles sont les instructions qui permettent de visualiser les graphes des trois fonctions précédentes (sinus, échelon unité et sinus cardinal, avec amplitude et fréquence) ?

- Quel package (bibliothèque) utiliser pour échantillonner (avec fréquence d'échantillonnage)et filtrer (avec fréquence du filtre) ces fonctions ?

- Si on clique sur un des graphe (sinus par exemple) comment faire pour avoir les coordonnées de ce point précis ?

Répondre à anonyme

9

barabbas, le 21 jui 2008 à 17:21:11

Essaye d'utiliser ChartDirector.jar ,il va faciliter ta tache
tu le télécharge d'abord Mr walla Mme
ciao Melle

Répondre à barabbas

10

anonyme, le 22 jui 2008 à 17:34:32

Salam
je veux remercie la personne qui m'aidé

Répondre à anonyme