всем здрасте.
я начал писать арконойд с помощью OpenGL
в с++ я ешо мало чего понимаю и поэтому прошу у вас помощи.
дело в том что я пытаюсь реализовать отскок шарика от платформы а у меня получаеться не так как надо тоесть платформа идет в лево шарик летит вверх,а платформа идет вправо шарик летит в низ и самое главное не происходит отскока от платформы для того чтобы вы поняли о чем я кидаю код
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <GL/glaux.h>
#pragma comment (lib,"glut32.lib")
#pragma comment (lib,"glaux.lib")
#pragma comment (lib,"glu32.lib")
#pragma comment (lib,"opengl32.lib")
extern double xp=0.1;//координаты шарика
extern double yp=0.1;//координаты шарика
extern double vx=0.1;//координаты скорости
extern double vy=0.1;//координаты скорости
extern double dt=0.1;
void CALLBACK resize(int width,int height)
{
glViewport(0,0,width,height);
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho(-5,5, -5,5, 2,12);
gluLookAt( 0,0,5, 0,0,0, 0,1,0 );
glMatrixMode( GL_MODELVIEW );
}
void podstavka (void)
{
glPushMatrix();
glTranslated(vx/0.1, 0.0, 0.0);
glTranslated(-1.0,-4.5, 0.0);
glColor3d(0,0,1);
auxSolidBox(3,0.2,1);
glPopMatrix();
}
void sharik()
{
glPushMatrix();
glTranslated(0, xp/1.0, 0.0);
auxSolidSphere(0.3);
xp = xp-vx*dt;
yp = yp-vy*dt;
if(vy ==vx)
vy = -vy;
glPopMatrix();
}
void CALLBACK display(void)
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
podstavka();
sharik();
auxSwapBuffers();
}
void CALLBACK levo(void)
{
vx=vx-0.03;
}
void CALLBACK pravo(void)
{
vx=vx+0.03;
}
void main()
{
float pos[4] = {3,3,3,1};
float dir[3] = {-1,-1,-1};
auxInitPosition( 50, 10, 400, 400);
auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE );
auxInitWindow( L"Sphere2" );
auxIdleFunc(display);
auxKeyFunc(AUX_LEFT,levo);
auxKeyFunc(AUX_RIGHT,pravo);
auxReshapeFunc(resize);
glEnable(GL_ALPHA_TEST);
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glLightfv(GL_LIGHT0, GL_POSITION, pos);
glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir);
auxMainLoop(display);
}
прошу помогите пожалуйста