Ich versuche, eine Simulation eines Sonnensystems in opengl mit C zu bauen. Ich kann nicht herausfinden, wie man den Code für die Berechnung der Richtung der Kraft auf a Planet von einem anderen. Das, was ich habe bisher:berechnen Richtung der Anziehungskraft zwischen Planeten
void attraction(planet self, planet other, float *direction)
{
float d = vecDistance(self.p, other.p);
//calc the force of attraction
float f = G * ((self.mass * other.mass)/(pow(d, 2)));
//calc the direction of the force
float vectorDist[3];
vecSub(self.p, other.p, vectorDist);
direction[0] = f*vectorDist[0]/d;
direction[1] = f*vectorDist[1]/d;
direction[2] = f*vectorDist[2]/d;
}
float vecDistance(float *pV1, float *pV2)
{
float fLen=0.0f;
if(pV1 && pV2)
{
float av[3];
vecSub(pV2, pV1, av);
fLen=vecLength(av);
}
return fLen;
}
void vecSub(float *pV0, float *pV1, float *pVRes)
{
if(pV0 && pV1 && pVRes)
{
pVRes[0]=pV0[0]-pV1[0];
pVRes[1]=pV0[1]-pV1[1];
pVRes[2]=pV0[2]-pV1[2];
}
}
Die Berechnung der Stärke der Kraft sieht richtig aus. Ich weiß nichts über den Vektor. 'Return fx, fy, fz;' wird nicht funktionieren. 'attraction' gibt einen float zurück, nicht 3. Wo ist' vecLength' definiert und warum definieren Sie 'av' mit einer Länge von 4 statt 3? –
Ich habe meinen Code geändert, aber das Problem besteht immer noch. mein Testplanet erscheint nicht auf dem Bildschirm – user3476732
mein Fehler kann sonst wo aber nur nicht sicher über meine Berechnung für die Richtung – user3476732