Aide pour une Application graphique

Résolu
Signaler
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
-
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007
-
Bonjour tout le monde,
Voilà, j'aurais besoin d'aide pour développer une application graphique. En effet, j'ai developpé un petit programme qui permet de calculer les points d'un système d'équations. Le problème c'est que je voudrais créer une frame pour pouvoir tracer ma fractale, or j'ai vu que la méthode g.drawLine ne permet pas de tracer des doubles. Est ce que quelqu'un pourrait m'aider ?
J'ai mis mon code source ci-dessous qui calcul les itérations:
(J'ai pas mis l'interface graphique car je ne sais pas comment faire pour le moment).

public class MiraTest {


public static void main(String[] args) {
double x, y, xp;
int i, n;
double A = -0.48;
double B = 0.93;
x = 4.0;
y = 4.0;
n = 30000;
xp=0.0;


for(i=1;i<=200;i++) {
xp = B*y+A*x+2*(1-A)*x*x/(1+xp*xp);
y = -x+A*xp+2*(1-A)*xp*xp/(1+xp*xp);
x = xp;


}
for(i=1;i<=n;i++) {
xp = B*y+A*x+2*(1-A)*x*x/(1+x*x);
y = -x+A*xp+2*(1-A)*xp*xp/(1+xp*xp);
x = xp;
}
}

Jarod_Delaware

5 réponses

Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007

hum, j'avais pas vu, mais dans les 2 boucles,

le copier-coller c'est mal passe..



si tu regardes :

if (y<min )="">

min = y;

}





n'est pas bon,

c'est



</min>
if (y<min){<min )="">

min = y;

}



tu en a qqu'une a corrige...

</min>



-------------------
dams
-------------------
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007

Tiens, cadeau...

c'est ameliorable en interface,

mais ca te premettra de jouer un peu avec les parametres

(des JSpinners auraient ete mieux...)



import java.awt.*;

import java.awt.event.*;

import javax.swing.*;



public class Mira {



private double x, y, xp;

private int n, n1;

private double A;

private double B;

private double max;

private double min;

private double valX[];

private double valY[];

private MiraPanel miraPanel;



public Mira() {

A = -0.48;

B = 0.93;

x = 4.0;

y = 4.0;

n = 30000;

n1 = 200;

xp = 0.0;

miraPanel = new MiraPanel();

createView();

}



public static void main(String[] args) {

new Mira();

}



private void launchTest(){

max = Double.MIN_VALUE;

min = Double.MAX_VALUE;

valX = new double[n + n1];

valY = new double[n + n1];

int index = 0;

for (int i = 1; i <= n1; i++) {

xp = B * y + A * x + 2 * (1 - A) * x * x / (1 + xp * xp);

y = -x + A * xp + 2 * (1 - A) * xp * xp / (1 + xp * xp);

x = xp;

if (y<min )="">

min = y;

}

else if (y>max){

max = y;

}

if (x<min )="">

min = x;

}

else if (x>max){

max = x;

}

valX[index] = x;

valY[index++] = y;

}

for (int i = 1; i <= n; i++) {

xp = B * y + A * x + 2 * (1 - A) * x * x / (1 + x * x);

y = -x + A * xp + 2 * (1 - A) * xp * xp / (1 + xp * xp);

x = xp;

if (y<min )="">

min = y;

}

else if (y>max){

max = y;

}

if (x<min )="">

min = x;

}

else if (x>max){

max = x;

}

valX[index] = x;

valY[index++] = y;

}

}



private void createView(){

//interface

final JTextField t1 = new JTextField(""+A);

final JTextField t2 = new JTextField(""+B);

final JTextField t3 = new JTextField(""+x);

final JTextField t4 = new JTextField(""+y);

final JTextField t5 = new JTextField(""+n);

final JTextField t6 = new JTextField(""+n1);

final JTextField t7 = new JTextField(""+xp);

JButton button = new JButton("OK");

button.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent ae){

try{

A = Double.parseDouble(t1.getText());

B = Double.parseDouble(t2.getText());

x = Double.parseDouble(t3.getText());

y = Double.parseDouble(t4.getText());

n = Integer.parseInt(t5.getText());

n1 = Integer.parseInt(t6.getText());

xp = Double.parseDouble(t7.getText());

launchTest();

miraPanel.setPoints();

}

catch(Exception ex){

JOptionPane.showMessageDialog(miraPanel,


"ERROR",


"INCORRECT VALUES!!!",


JOptionPane.ERROR_MESSAGE);

return;

}

}

});

JPanel panel = new JPanel(new GridLayout(8,2));

panel.add(new JLabel("A"));

panel.add(t1);

panel.add(new JLabel("B"));

panel.add(t2);

panel.add(new JLabel("x"));

panel.add(t3);

panel.add(new JLabel("y"));

panel.add(t4);

panel.add(new JLabel("n"));

panel.add(t5);

panel.add(new JLabel("n1"));

panel.add(t6);

panel.add(new JLabel("xp"));

panel.add(t7);

panel.add(button);

//frame

JFrame frame = new JFrame("MIRA");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().setLayout(new BorderLayout());

frame.getContentPane().add(BorderLayout.CENTER, miraPanel);

frame.getContentPane().add(BorderLayout.EAST, panel);

frame.pack();

frame.setVisible(true);

}



private class MiraPanel

extends JPanel{



private int SIZE = 600;



public MiraPanel(){

super(true);

this.setPreferredSize(new Dimension(SIZE, SIZE));

}



public void setPoints() {

repaint();

}



public void paintComponent(Graphics g) {

if (valX==null || valY==null || valX.length<2){

return;

}

int w = getWidth();

int h = getHeight();

g.clearRect(0, 0, w, h);

g.setColor(Color.black);

//transform points

int valx[] = new int[valX.length];

int valy[] = new int[valX.length];

double echelle = Math.max(w,h) / (max - min);

for (int i=0; i<valx.length ;="" i="">

valx[i] = (int)Math.round((valX[i] - min) * echelle);

valy[i] = (int)Math.round((valY[i] - min) * echelle);

}

//draw points

for (int i=1; i<valx.length ;="" i="">

g.drawLine(valx[i-1], valy[i-1],

valx[i], valy[i]);

}

}



}

}


-------------------
dams
-------------------</valx.length></valx.length></min></min></min></min>
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
2
Salut dmallet,
Un grand merci pour ton aide. Cependant j'ai essayé de compiler ton code mais j'ai 14 erreurs de compilations. Si tu peux m'aider ça serait bien.
Encore merci.

Jarod_Delaware
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007

Donnes-moi test erreurs, c'est pas normal, ca doit compiler...

-------------------
dams
-------------------
Messages postés
273
Date d'inscription
samedi 5 juillet 2003
Statut
Membre
Dernière intervention
31 mars 2015
2
Voici les 14 erreurs que j'ai lors de la compilation:

Mira.java:44: ')' expected
min = y;
^


Mira.java:46: 'else' without 'if'
else if (y>max){
^


Mira.java:52: illegal startof type
else if (x>max){


Mira.java:55: expected
valX[index] = x;
^


Mira.java:56: ']' expected
valY[index++] = y;
^


Mira.java:56: expected
valY[index++] = y;
^
Mira.java:58: 'class' or 'interface' expected
for (int i=1; i<n; i++) {
^


Mira.java:70: 'class' or 'interface' expected
}
^


Mira.java:164: ';' expected
valx[i] = (int)Math.round((valX[i] - min) * echelle);
^


Mira.java:165: ')' expected
valy[i] = (int)Math.round((valY[i] - min) * echelle);
^


Mira.java:168: illegal start of type
for (int i=1; i
^


Mira.java:171: expected
}
^


Mira.java:172: 'class' or 'interface' expected
}
^


Mira.java:176: 'class' or 'interface' expected
^
14 errors

Jarod_Delaware