Bonjour.
Un petit problème pour résoudre la collision de polygones,j'ai vu qu'il fallait calculer le déterminant d'une matrice,mais je ne sais pas comment l'on trouve les vecteurs des polygones qui vont entrés en collision.
merci.
int nb=20; Polygones[] polygones=new Polygones[nb]; void setup(){ size(900,700); for(int i=0;i<nb;i++) { polygones[i]=new Polygones(); } } void draw(){ background(50,0,100,5); for(int i=0;i<nb;i++) { polygones[i].deplacement(); polygones[i].polygones(); polygones[i].rebond_mur(); } for(int i=0;i<nb;i++) { for(int j=i+1;j<nb;j++) { polygones[i].collision(polygones[j]); } } } class Polygones{ PVector position; PVector deplacement; float nb_face; float rayon; color couleur; Polygones(){ position=new PVector(random(width),random(height)); deplacement=new PVector(random(-1,2),random(-2,3)); nb_face=random(3,8); rayon=random(20,60); couleur=color(random(0,255),random(0,255),random(0,255)); } void deplacement(){ position.add(deplacement); } void polygones(){ float angle=TWO_PI/nb_face; beginShape(); for(float a=0;a<TWO_PI;a+=angle) { float sx=position.x+cos(a)*rayon; float sy=position.y+sin(a)*rayon; fill(couleur); vertex(sx,sy); } endShape(CLOSE); } void rebond_mur(){ if(position.x<0+rayon||position.x>width-rayon) { deplacement.x *=-1; } if(position.y<0+rayon||position.y>height-rayon) { deplacement.y *=-1; } } void collision(Polygones j){ float distance=position.dist(j.position); if(distance<=rayon) { deplacement.x=deplacement.x*-1; deplacement.y=deplacement.y*-1; } } }
Hors ligne
Comme tu parles de matrice sans donner tes références, il est difficile de pouvoir t'aider.
Cependant, quelques remarques sur ton code il est étrange que le nombre de face soit un flot et non un entier.
D'autre part, pour la détection de collision basique :
distance <= rayon + j.rayon
Sinon de petits liens:
http://www.codeproject.com/Articles/155 … -Detection
http://www.geometrictools.com/Documenta … ngAxes.pdf
Il existe aussi, mais je pense que tu le sais déjà deux librairies Processing pour les collisions etc.
Box2D et toxiclibs
Hors ligne