Witam! Mam nastepujący problem. Dopiero zaczynam c++ i musze napisac symulacje satelity ktoremu nadajemy predkosc poczatkowa. Grawitacja ma zakrzywiac tor ruchu. rownanie to opisujace to g=V(prostopadle do wektora g)/R*R. Mam to napisac w openGL. Stworzylem sobie klase Vektor i napisalem funkcje NextStep(). Nie wiem natomiast czy wszystko mam dobrze w tej klasie bo pierwszy raz robie program wykorzystujac klasy. Program wyswietla mi tylko polozenie poczatkowe satelity Position.m_fX,Position.m_fY i nie przesuwa jej. Osie sa ustwione X w prawo, Y do góry , Z - prostopadle do monitora. Gdzies jest blad ,poniewaz kiedy sobie wyswietle w konsoli obliczenia to wychodza jakies bzdury. Moze zle napisalem operatory?

class CVektor
{
	
private:
	double m_fX,m_fY;
public:
	
	CVektor(double fX=0.0f,double fY=0.0f);

	// przeciazanie operatorow
	friend CVektor operator + (const CVektor& vektor1,const CVektor& vektor2)
	{
		return CVektor(vektor1.m_fX+vektor2.m_fX,
						vektor1.m_fY+vektor2.m_fY);
	}

	friend CVektor operator * (const CVektor& vektor,double fLiczba)
	{ return CVektor(vektor.m_fX*fLiczba,vektor.m_fY*fLiczba);}
	
	
	static CVektor A(CVektor pos);
	static void NextStep();
	void display();
	~CVektor(void);
	
	
};
#include "StdAfx.h"
#include "opisRuchu.h"
#include "openGL1.h"
#include <iostream>
#include <math.h>
#include <glut.h>
using namespace std;

CVektor Position,Speed;
CVektor::CVektor(double fX,double fY)
{
	
	Speed.m_fX=0.0;
	Speed.m_fY=0.0;
	Position.m_fX=0.0;
	Position.m_fY=75.0;
}
CVektor::~CVektor(void)
{
}


void CVektor:: NextStep()
{
	double h=0.15;
	
	CVektor V = Speed;
	CVektor g = A(Position); //funcja zwraca wektor przyspieszenia w danej pozycji

	CVektor _V = Position + (V*h);
	CVektor _g = Speed + (g*h);
	
	Position=(Position + ( (V + _V)*(h*0.5)));
	Speed=(Speed + ( (g + _g)*(h*0.5)));
	


	



}
CVektor CVektor::A(CVektor pozycja)
{
	CVektor przyspieszenie;
	double G=6.67;
	double Masa=59.7;
	
	double przyspieszenie_X,przyspieszenie_Y;
	przyspieszenie_X =( (G*Masa) / pow(pozycja.m_fX,2.0));
	przyspieszenie_Y =( (G*Masa) / pow(pozycja.m_fY,2.0));

	
	przyspieszenie.m_fX=przyspieszenie_X;
	przyspieszenie.m_fY=przyspieszenie_Y;
		
	
	return przyspieszenie;

}
void CVektor::display(void)
{
	glClearColor(0,0,0,0); //kolor czarny tla
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //czyscimy bufor
	glEnable(GL_DEPTH_TEST); //uruchamiamy bufor glebi
	glPushMatrix();
	NextStep();
	glColor3f(0.0f,0.7f,0.0f);
	glutSolidSphere(63.76, 20, 16);   /* rysuje Ziemie */
    glColor3f(1.0f,0.0f,0.0f);
	
	glTranslatef ((GLfloat) Position.m_fX, (GLfloat)Position.m_fY, 0.0);
    glutSolidSphere(5.0, 10, 8);    /* rysuje satelite */

	glPopMatrix();
	glutSwapBuffers();
}

pozniej w pliku głównym

CVektor nastepny;
void Next(void)
{
	nastepny.display();
}

i uzywam glutDisplayFunc(Next);*ustawiamy funkcje display i oczywiscie na koncu glutMainLoop(); *uruchamiamy petle opengl