salut tout le monde,
j'ai une question sûrement très basique, mais j'ai beau chercher partout (bouquins, sites de références et d'examples, etc), je ne trouve pas ma réponse...
je veux simplement créer une ligne à partir d'un point.
j'ai les coordonnées X et Y de mon point d'origine et celles de mon point de fin, et je voudrais trouver la fonction qui va faire "grandir" la ligne de mon point d'origine à mon point de fin.
une succession de points qui restent affichés à l'écran me conviendrait aussi...
si quelqu'un peut m'aider, ce serait cool.
merci d'avance!
em
Hors ligne
ah, en fait j'ai peut-être parlé trop vite, juste après avoir posté je suis enfin tombée sur ça : http://processing.org/discourse/yabb2/Y … 1260051290 et c'est ce que je cherchais je crois...
Hors ligne
un truc dans l'esprit ? :
float x2,y2,x1,y1; void setup() { x1 = 25; y1 = 50; x2 = x1; y2 = y1; } void draw() { line(x1,y1,x2,y2); x2 +=0.1; }
Dernière modification par oyster_twiter (2012-01-05 18:53:42)
Hors ligne
Salut emtv,
Ce genre de truc peut se faire en utilisant des coordonnées polaires et un peu de trigo :
PVector origine, fin, intermediaire; float distance; int etape, etape_max = 20; void setup() { size(500, 500); origine = new PVector(random(400)+50, random(400)+50); fin = new PVector(); intermediaire = new PVector(); } void draw() { strokeWeight(8); background(255); fin.set(mouseX, mouseY, 0); distance = (fin.dist(origine) / etape_max) * etape; float a = atan2(fin.y - origine.y, fin.x - origine.x); intermediaire.set(origine.x + distance * cos(a), origine.y + distance * sin(a), 0); line(origine.x, origine.y, intermediaire.x, intermediaire.y); etape ++; etape %= etape_max; }
Hors ligne
merci pour vos réponses, mais du coup j'ai réussi à faire ce que je voulais avec le code que j'ai cité plus haut, c'est cool
Hors ligne
alors en fait c'est pas fini !!
je voudrais maintenant continuer ma ligne dans un second temps (en créer une seconde avec pour origine la fin de la première):
1. ma ligne se crée du point A au point B
2. la ligne reste affichée un certain temps (disons 5 secondes) entre A et B
3. une autre ligne se crée du point B au point C (la ligne entre A et B est toujours affichée)
4. mes deux lignes A-B et B-C restent affichées.
pour l'instant, j'ai dans mon code pour faire les étapes 1 et 2 décrites ci-dessus :
comment faire pour déclencher une seconde interpolation 5 secondes plus tard?
Hors ligne
Il faut jouer avec les else if pour tester ou tu te trouves dans ton planning :
C'est pour dessiner les cotés d'une surface, style ce qu'il se fait en mapping vidéo- si oui je bosse sur un outil pour ça- ?
Voici mon code, j'utilise le else if pour tester ou je me trouve, puis des maps pour calculer la valeur. On pourrait réduire le nombre de conditions avec un constrain.
Je pense que un Lerp pourrait également convenir pour remplacer les map : http://processing.org/reference/lerp_.html
Dernière modification par cgiles (2012-01-07 10:28:12)
Hors ligne
merci emoc et cgiles pour vos réponses, ça m'ouvre des perspectives !!
je vais voir quelle est la méthode qui colle le mieux à ce que je cherche à faire, entre ce que j'avais déjà trouvé et ce que vous proposez.
dans tous les cas, ça me permet d'y voir plus clair !
et pour te répondre, cgiles, non, ce n'est pas pour dessiner les côtés d'une surface, mais pour faire se succéder des tracés différents, dont les points d'origine ou de fin sont liés à des coordonnées renvoyées par des capteurs.
Hors ligne