» codelab : http://codelab.fr/accueil » Forum : Processing : http://codelab.fr/processing » Placer texte aleatoire sur point aleatoire : http://codelab.fr/6326 Ceci est la version imprimable d'un sujet du forum, pour retourner à la version complète : Placer texte aleatoire sur point aleatoire |
georges4242 — 2016-05-30 17:11:57 |
Bonjour, |
matheynen — 2016-05-30 18:56:21 |
Chouette petit code. |
Mushussu — 2016-05-30 22:22:17 |
Bonsoir, Particle[] pArray; void setup() { size(1000, 500, P3D); smooth(4); strokeWeight(1); stroke(0, 2, 120); pArray = new Particle[1000]; for (int i = 0; i < pArray.length; i++ ) { pArray[i] = new Particle(random( width ), random( height ), 0 ); pArray[i].vel.set( 0, 0, 0); } for (int i = 0; i < 10; i++) { pArray[int(random(1000))].mot = "mot" + i; } } void draw() { background(255); fill(0); stroke(0, 20); strokeWeight(1); for (int i = 0; i < pArray.length; i++ ) { pArray[i].update(); } //adding in network for (int i = 0; i < pArray.length-1; i++) { for (int j = i; j < pArray.length; j++) { if (dist(pArray[j].pos.x, pArray[j].pos.y, pArray[i].pos.x, pArray[i].pos.y) < 33) { line(pArray[j].pos.x, pArray[j].pos.y, pArray[i].pos.x, pArray[i].pos.y); } } } for (int i = 0; i < pArray.length; i++ ) { pArray[i].draw(); } } void mouseReleased() { println( "Mouse released!" ); for (int i = 0; i < pArray.length; i++ ) { pArray[i].attract = !pArray[i].attract; } } class Particle { PVector pos; PVector vel; PVector acc; boolean attract; String mot; Particle( float x, float y, float z ) { pos = new PVector(x, y, z); vel = new PVector(); acc = new PVector(); attract = true; mot = ""; } void update() { mouseAttract(); vel.add( acc ); pos.add( vel ); vel.mult( 0.80f ); bounce(); acc.set( 0, 0, 0 ); } //particules creation void draw() { colorMode( RGB, 255, 255, 255 ); ellipse( pos.x, pos.y, 5, 5 ); point(pos.x, pos.y); smooth(4); if (mot != "") { text(mot, pos.x, pos.y); } } void bounce() { if (pos.x < 0 || pos.x > width ) { vel.x *= -1.0f; } if (pos.y < 0 || pos.y > height ) { vel.y *= -1.0f; } } void mouseAttract() { float magnetism; if ( attract == true ) { magnetism = -5.0f; } else { magnetism = 5.0f; } PVector mouse = new PVector( mouseX, mouseY ); mouse.sub( pos ); float magnitude = mouse.mag(); acc.set( mouse ); acc.mult( magnetism / (magnitude * magnitude) ); } } |
georges4242 — 2016-06-07 10:35:45 |
salut, merci pour les réponses j'ai trouvé en fait j'ai utilisé les string pour lister mes mots et ensuite les injecter en aléatoire sur certains des points aléatoire :) par contre du coup je suis coincé sur un autre point c'est que je souhaiterai mettre une forme au milieu et que mes lignes rebondissent dessus ( qu'elles ne passent pas dessous ) |
matheynen — 2016-06-07 15:34:25 |
Un moyen simple et d'ajouter des conditions à ta fonction bounce(). |
georges4242 — 2016-06-09 09:47:14 |
c'est ce que je me suis dis, ca serait une ellipse à mettre au centre mais deja pour le test un carré serait plus simple à définir je pense ^^ |
georges4242 — 2016-06-09 10:12:18 |
en fait le soucis que j'ai c'est que oui je peux les contenir dans un carré mais le contraire me parait compliqué il faudrait qu'ici : if ( pos.y < 250 || pos.y > 500 ) pour les tailles au lieu de mettre juste 250 je puisse en mettre 2 du genre de 0 à 250 et pour l'autre de 500 à 1000 ce qui laisserait un trou de 250 au milieu mais je sait pas si c'est possible d'écrire ca :s enfin je voit pas comment ou alors ma réflexion n'est pas bonne et il y a un autre moyen |
matheynen — 2016-06-09 15:47:34 |
Essaye avec ça alors https://processing.org/reference/PVector_dist_.html |
georges4242 — 2016-06-09 17:09:49 |
en fin de compte c'est un carré que je dois faire mais je ne comprend pas (la fatigue du soir surement) comment intégrer mes valeurs à mon bounce, en fait c'est la rédaction qui me pose problème ^^. merci pour ton aide en tout cas :) |
matheynen — 2016-06-09 18:27:12 |
Je dirais en vitesse sans avoir tester |
georges4242 — 2016-06-10 10:26:01 |
ah d'accord je vois mais ca va pas créer un conflit entre chacun des cotés non ? |
georges4242 — 2016-06-10 10:29:45 |
ah bah non je suis bête j'ai rien dit ^^. bon je vais tester tout ca merci beaucoup :) |
georges4242 — 2016-06-10 14:06:11 |
merci beaucoup du coup j'ai fait comme ca : |