パーティクル システムの物理更新機能が正しくないようです。すべてのパーティクルがマウスに引き寄せられるようにしています。
パーティクルはマウス ポインタに向かって移動し、非常に近くまで移動します。近くにいるとスピードが速すぎて、ポインタから遠く離れて二度と戻ってこない.
更新機能は次のとおりです。
void updateParticle(particle& p,double time){
const double G=0.000000000066726;
const double POINTERMASS=1000000000000;
double squareDistance=pow(p.coords.x-pointerDevice.x,2)+pow(p.coords.y-pointerDevice.y,2)+pow(p.coords.z-pointerDevice.z,2);
if(squareDistance<0.001)
squareDistance=0.001;//to fix the possible division by zero
coords_3d_f accelerationVector={p.coords.x-pointerDevice.x,p.coords.y-pointerDevice.y,p.coords.z-pointerDevice.z};
accelerationVector=vector_scalar_multiplication(vector_unit(accelerationVector),((G*POINTERMASS)/squareDistance));
accelerationVector=vector_scalar_multiplication(accelerationVector,time);
p.velocity=vector_addition(p.velocity,accelerationVector);
p.coords.x-=p.velocity.x*time;
p.coords.y-=p.velocity.y*time;
p.coords.z-=p.velocity.z*time;
}
squareDistance が一定の場合、プログラムは問題ないように見えますが、間違っていることはわかっています。
それで、私は何を間違っていますか?