warum kein gitter?
-
hi!
ich hab mir ein kleine partikelsystem gebastelt und hab folgende frage:for(int l = 0; l < particleGrid[tmp.gridPos.x + i][tmp.gridPos.y + j].size(); l++) { particle target = particles.at(particleGrid[tmp.gridPos.x + i][tmp.gridPos.y + j].at(l)); double d = pDist(tmp, target); if(d > 0 && d < 40) { DblPoint tv = pNVektor(tmp, target); if(d > 20) { tmp.xVel += tv.x*d/300; tmp.yVel += tv.y*d/300; } else { tmp.xVel += tv.x*(20-d)/-300; tmp.yVel += tv.y*(20-d)/-300; } //target.xVel -= tv.x*d/100; //target.yVel -= tv.y*d/100; } }warum ordnen sich die partikel hier in quadraten an und nicht in einem gitter, welches aus dreiecken besteht?
ich guck mir die entfernung an
double pDist(particle p1, particle p2) { POINT dist; dist.x = p1.x - p2.x; dist.y = p1.y - p2.y; return sqrt(dist.x*dist.x + dist.y*dist.y); }und schau ob sie zwischen 20 und 40 liegt.
wenn ja, dann ziehen sich die partikel anDblPoint pNVektor(particle from, particle to) { POINT dist; DblPoint v; dist.x = to.x - from.x; dist.y = to.y - from.y; if(pos(dist.x) > pos(dist.y)) { v.y = dist.y / dist.x; v.x = dist.x/pos(dist.x); } else { v.x = dist.x / dist.y; v.y = dist.y/pos(dist.y); } return v; }wenn die entfernung kleiner als 20 ist, dann stossen sie sich ab(kraft linear zu 20-distanz)
jetzt müssten die partikel doch eigentlich versuchen zu allen umliegenden partikeln eine distanz von 20 zu haben oder? sie ordnen sich aber perfekt in kleinen quadraten an

woran liegt das?
wenn ihr mehr code sehen wollt, sagt bescheid. danke