/* UTF-8 * * © Jacques Duma * 14 mai 2009 * * Tir à la Cible avec Trajectoire Parabolique */ //==================================================================== // Deux Glisseurs pour définir position et vitesse de la balle //==================================================================== // ======= GlisseurBalle : DESSIN (appelé dans draw) ================== void drawGlisseurBalle() { // contrôle la position initiale de la balle (xDepartBalle, yDepartBalle) stroke(0); // couleur de fond inversée lors du survol par la souris fill(mouseInGlisseurBalle() ? negatif(balle) : balle); ellipse(xDepartBalle, yDepartBalle, 12, 12); } // === GlisseurBalle : EVENEMENT (appelé dans mouseDragged) ============ boolean mouseInGlisseurBalle() { return mouseX >= xDepartBalle - 17 && mouseX <= xDepartBalle + 17 && mouseY >= yDepartBalle - 17 && mouseY <= yDepartBalle + 17; } // === GlisseurBalle : EVENEMENT (appelé dans mouseDragged) ============ void mouseDraggedGlisseurBalle() { // on évite de sortir de la fenêtre xDepartBalle = min(width, max(0, mouseX)); yDepartBalle = min(height, max(0, mouseY)); } //==================================================================== //==================================================================== int xvInit, yvInit; // ======= GlisseurVecteur : DESSIN (appelé dans draw) ================== void drawGlisseurVecteur() { // contrôle le vecteur vitesse initiale (xvInit, yvInit) // calculé à partir des coordonnées actuelles de la balle (x, y) xvInit = int(x + vx()); yvInit = int(y + vy()); stroke(0); fill(0, 0, 255); // couleur de fond inversée lors du survol par la souris fill(mouseInGlisseurVecteur() ? negatif(vitesse) : vitesse); ellipse(xvInit, yvInit, 8, 8); } // === GlisseurVecteur : EVENEMENT (appelé dans mouseDragged) ============ boolean mouseInGlisseurVecteur() { return mouseX >= xvInit - 17 && mouseX <= xvInit + 17 && mouseY >= yvInit - 17 && mouseY <= yvInit + 17; } // === GlisseurVecteur : EVENEMENT (appelé dans mouseDragged) ============ void mouseDraggedGlisseurVecteur() { // on évite de sortir de la fenêtre xvInit = min(width, max(0, mouseX)); yvInit = min(height, max(0, mouseY)); // le vecteur vitesse initiale est recalculé à partir de (xvInit, yvInit) // et des coordonnées actuelles de la balle (x, y) vx0 = xvInit - x; vy0 = y - yvInit; } //====================================================================