Ok dank eurer Hilfe bin ich nun soweit :
Delphi-Quellcode:
vbuf := subvectors(chspr[i].v,chspr[i2].v) ;
alpha := arccos(dotproduct(chspr[i].v,vbuf)/((magnitude(chspr[i].v)*magnitude(vbuf))));
lengthv := cos(alpha)*magnitude(chspr[i].v);
v1 := scalevector(normalize(vbuf),lengthv);
alpha := arccos(dotproduct(chspr[i2].v,vbuf)/((magnitude(chspr[i2].v)*magnitude(vbuf))));
lengthv := cos(alpha)*magnitude(chspr[i2].v);
v2 := scalevector(normalize(vbuf),lengthv);
vbuf := addvectors(v1,v2); // vbuf ist am Ende immer (0,0), v1 und v2 sind "Gegenvektoren"
chspr[i].v := subvectors(chspr[i].v,vbuf);
chspr[i2].v := addvectors(chspr[i2].v,vbuf);
Aber vbuf ist am Ende immer (0,0)

und die Bahnen der Kugeln verändern sich deshalb nicht