Dörti.Hermi
Erfahrenes Mitglied
Hallo zusammen!
Folgenes: Ich habs jetzt schon 2 Stunden probiert, aber bin noch immer nicht draufgekommen wie's funktioniert. Und zwar will ich ein Objekt (in meinem Fall ein zufällig generiertes Dreieck) nach dem Tastendruck [k] von der aktuellen Position beim Tastendruck auf einer Kreisbahn bewegen lassen. Drehrichtung ist egal. Ich weiß, dass ich da irgendwas mit sin und cos machen muss, aber irgendwie bewegt sich das Objekt auf einer Geraden.
Hier mal mein Code (Auszug):
Es geht um die Berechnung in der "timer_func". Die Zahlenwerte sind hierbei nur beliebig gewält, weil ich nicht wusste, welche ich brauche.
Kann mir jemand weiterhelfen?
Lg Andi
Folgenes: Ich habs jetzt schon 2 Stunden probiert, aber bin noch immer nicht draufgekommen wie's funktioniert. Und zwar will ich ein Objekt (in meinem Fall ein zufällig generiertes Dreieck) nach dem Tastendruck [k] von der aktuellen Position beim Tastendruck auf einer Kreisbahn bewegen lassen. Drehrichtung ist egal. Ich weiß, dass ich da irgendwas mit sin und cos machen muss, aber irgendwie bewegt sich das Objekt auf einer Geraden.
Hier mal mein Code (Auszug):
Code:
#include <iostream>
#include <GL/glut.h>
#include <time.h>
#include <math.h>
float coords[3][2], rgb[3];
const int MILLISEC_PRO_FRAME = 20;
static float dx, dy;
static bool animation_laeuft = true;
static bool circle = false;
int i,j;
static void timer_func (int value)
{
if(circle)
{
dx = 3*cos(0.01);
dy = 3*sin(0.01);
}
for(j=0; j<3; j++)
{
coords[j][0] += dx;
coords[j][1] += dy;
}
glutPostRedisplay ();
}
static void display_func (void)
{
if (animation_laeuft)
glutTimerFunc (MILLISEC_PRO_FRAME, timer_func, 0);
glClear(GL_COLOR_BUFFER_BIT);
glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
glBegin (GL_POLYGON);
glColor3f(rgb[0],rgb[1],rgb[2]);
for(i=0; i<3; i++)
{
glVertex3f (coords[i][0], coords[i][1],0);
}
glEnd ();
glutSwapBuffers( );
}
static void keyboard_func (unsigned char key, int x, int y)
{
switch (key)
{
case ' ':
animation_laeuft = !animation_laeuft;
glutPostRedisplay ();
break;
case '+':
dx *= 1.2;
dy *= 1.2;
break;
case '-':
dx /= 1.2;
dy /= 1.2;
break;
case 'k':
circle = !circle;
glutPostRedisplay;
break;
case 'Q':
case 'q':
exit (0);
break;
}
}
Es geht um die Berechnung in der "timer_func". Die Zahlenwerte sind hierbei nur beliebig gewält, weil ich nicht wusste, welche ich brauche.
Kann mir jemand weiterhelfen?
Lg Andi