Forum Clubic

Tracé de courbe en java

Bonjour à tous!

Voila j’ai un petit problème. Je dois tracer une courbe de ce style:

http://img185.imageshack.us/img185/6339/etap2ca8.png

Sachant que mes valeurs sont stockées dans une LinkedList par un tirage aléatoire.
Je sais qu’il fait que j’utilise un DrawLine(,,,) mais je ne vois vraiment pas comment l’implémenter pour avoir un rendu de cette sorte.
Je vais faire un for qui va parcourir mon linkedlist pour me retourner les valeurs mais le problème vient au moment ou je dois faire le mettre en DrawLine.
Parce que le DrawLine a besoin d’un x et y de départ et d’un x et y d’arrivée pour tracer la ligne.
Donc le y de départ doit surement correspondre à ma valeur du LinkedList
le x bah c’est un déplacement donné par mes soins.
Pour le y d’arrivée, c’est la valeur suivante de mon LinkedList?

Je vous remercie d’avance,
=)

Edit: sayé g fini ça :slight_smile:
En fait c’etait bien ce principe :slight_smile:

Par contre maintenant j’ai un autre tout dernier petit soucis. C’est pour un autre type de courbe avec colorisation.
Faut que ça soit comme ça:
http://img209.imageshack.us/img209/1720/etap5xi4.png

Je me suis dis, y’aura bien une méthode fill**** qui me permettra de coloriser le dessous d’une courbe. Mais non, donc comment je peux me débrouiller?
j’ai vu dans la javadoc ceci dans Graphics2D:

 The following definitions of general legacy methods perform identically to previously specified behavior under default attribute settings:

    * For fill operations, including fillRect, fillRoundRect, fillOval, fillArc, fillPolygon, and clearRect, fill can now be called with the desired Shape. For example, when filling a rectangle:

       fill(new Rectangle(x, y, w, h));
       

      is called.

    * Similarly, for draw operations, including drawLine, drawRect, drawRoundRect, drawOval, drawArc, drawPolyline, and drawPolygon, draw can now be called with the desired Shape. For example, when drawing a rectangle:

       draw(new Rectangle(x, y, w, h));
       

      is called. 

Donc fo que j’utilise un draw mais quand je fais draw(new Line(*****)) bah ca marche pas…
Edité le 22/12/2008 à 02:26

double post
Edité le 22/12/2008 à 02:26

Pour tracer une surface, au lieu de faire des lignes qui partent du points précédent, il faut que tu fasses des rectangles qui partent de l’axe et monte verticalement jusqu’à la valeur voulue.

Par exemple, pour une courbe qui prend successivement les valeurs 2 - 3 - 2, tu traces un rectangle d’épaisseur 1, x = 0, qui va de coordonnée y = 0 à y = 2, un en x = 1 qui va de y = 0 à y = 3, et un en x = 2 qui va de y = 0 à y = 2.

Donc quelque chose du genre :

fillRect(0, 0, 2, 1);
fillRect(1, 0, 3, 1);
fillRect(2, 0, 2, 1);

//etc...

Edité le 22/12/2008 à 09:58

Sauf que ta solution fonctionne dans le cas ou tu n’as qu’une différence de “1” entre tes X ce qui n’est pas forcement le cas.
Tu verras si tu as 2 ou 3 malheureusement ton rectangle se règle suivant les valeurs des extrémités et donc du coup ca ne vas pas suivre la courbe…

Dans ce cas tu peux peut être t’en sortir avec fillPolygon

Je pense que ça donne quelque chose du genre :


int xpoints[] = {0, 0, 1, 1, 0};
int ypoints[] = {0, 2, 3, 0, 0};
int npoints = 5;
    
g.fillPolygon(xpoints, ypoints, npoints);

Edité le 22/12/2008 à 14:39

J’avoue que je n’y avais pas pensé mais ça doit pouvoir le faire en prenant partie par partie la courbe :slight_smile:
J’essayerai ça ds la soirée et j’éditerai pour donner mes impressions :stuck_out_tongue:

merci