Bonjour,
J'ai posé la même question dans le forum graphisme\2D, et je n'ai pas eu de réponse...
Je ne sais pas si c'est parce que je la pose au mauvais endroit, ou si les gens ne savaient pas que répondre à ma question.
J'espère être correct en la repostant ici.
J'ai tenté de créer une méthode qui défini les coordonnées d'un point qui progresse sur une droite. Cet évenement se passerait toutes les demi-secondes pour donner l’effet de déplacement.
Tout d'abord il y a un objectif, généré aléatoirement. J'aimerais que le chemin entre l'objectif et la position du point soit divisé par vingt. J'ai également créé des coordonnées "intervalles", c'est là que se téléporterait le point toutes les 1/2 sec.
Dans le code d'essai que je vous transmettrai plus bas, j'ai utilisé le théorème de pythagore, et j'ai également calculé ma pente pour construire mon équation paramétrique.
J'ai beaucoup réfléchi, et je pense que les équations paramétriques sont le bon choix pour calculer l'intermédiaire dont j'ai parlé ci-dessus.
Mais dites-moi tout de suite si vous pensez que je ne prend pas le bon chemin!
En plus d'être extrêmement brouillon, ce code est rempli de messages d'erreurs!
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 /* * -----prototype----- * idées brouillon de ma tête * code extrêmement bizzare */ package mathias.maboule; import java.util.Timer; import java.util.TimerTask; public abstract class Attend extends Timer { Timer t; public Attend() { t = new Timer(); t.schedule(new KaBouge(), 0, 1*1000);//je ne comprend pas l'erreur } }
très importante méthode!
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 package mathias.maboule; import javax.swing.*; import java.awt.*; import java.util.*; public abstract class KaBouge extends TimerTask { static Canvas myCanvas = new Canvas(); static Random myRandom = new Random(); public static int objectifX, objectifY, intermediaireX, intermediaireY, deltaX, deltaY, intDistance, pente; public static double doubleDistance; protected static void calculParamétrique(int positionX, int positionY) { objectifX = myRandom.nextInt(myCanvas.getWidth()); objectifY = myRandom.nextInt(myCanvas.getHeight()); //deltas deltaX = objectifX - positionX; deltaY = objectifY - positionY; //pente pente = (deltaY) / (deltaX); do { //distance position du point - objectif doubleDistance = (Math.sqrt(deltaX*deltaX + deltaY*deltaY)) / 20; intDistance = (int)doubleDistance; //équation paramétrique intermediaireX = positionX + intDistance*pente; intermediaireY = positionY + intDistance; } while(objectifX != intermediaireX && objectifY != intermediaireY); } }
Je serais très heureux que vous me disiez d'où vous pensez que vient le problème, et ce que je dois améliorer
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 package mathias.maboule; import java.util.*; import java.awt.*; import javax.swing.*; public class MiraculeuseFenetre extends Canvas { private static final long serialVersionUID = 1L; static Random myRandom = new Random(); static JFrame frame = new JFrame("déplacement d'un point"); static int positionX, positionY; public static void main(String[] args) { //voici où se trouve le point de départ positionX = myRandom.nextInt(KaBouge.myCanvas.WIDTH); positionY = myRandom.nextInt(KaBouge.myCanvas.HEIGHT); frame.setVisible(true); frame.setLocationRelativeTo(null); frame.setSize(500, 500); public void paint(Graphics g) {//erreur! KaBouge.calculParamétrique(positionX, positionY); g.setColor(Color.black); g.fillOval(KaBouge.intermediaireX, KaBouge.intermediaireY, 10, 10); } } }
D'ailleurs, j'espère ne pas avoir recréé de méthode existante
Partager