Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wahadło zegarowe [OPEN GL]

Ostatnio zmodyfikowano 2013-05-22 19:43
Autor Wiadomość
Menos
Temat założony przez niniejszego użytkownika
Wahadło zegarowe [OPEN GL]
» 2013-05-22 18:25:00
Witam mam problem z zrobieniem prostego wahadła w opengl. Nie wiem jak ustawić zeby punkt obrotu znajdował sie na początku wahadła. Teraz wahadło obraca sie w okół jakiegoś punktu tylko nie wiem za bardzo jakiego.... Oto mój kod :

 
C/C++
czas = czas + 0.01;
glPushMatrix();

glTranslatef( 1, 1, 0 );
glRotatef( - czas, 2, 0, 0 );


//std::cout<<czas<<"\n";

glTranslatef( 0, 1, 0 );
glBegin( GL_QUADS );
glColor3f( 1, 0, 0 );
glColor3f( 1, 0, 0 );
glTexCoord2f( 0, 0.432 ); glVertex3f( 0.0, 0.0 - 0.8f, 0.0 ); //1
glColor3f( 1, 0, 0 ); //2
glTexCoord2f( 0, 0 ); glVertex3f( 0.0, 0.2f, 0.0 );
glColor3f( 0, 1, 0 ); //3
glTexCoord2f( 0.432, 0 ); glVertex3f( 0.05f, 0.20f, 0.0 );
glColor3f( 0, 0, 1 ); //4
glTexCoord2f( 0.890, 0.432 ); glVertex3f( 0.05f, 0.0 - 0.8f, 0.0 );

//prawa œciana
glColor3f( 0, 0, 1 ); //bia³y
glTexCoord2f( 1, 1 ); glVertex3f( 0.05f, 0.2f, 0.1f );
glTexCoord2f( 0, 1 ); glVertex3f( 0.05f, 0.2f, 0.0 );
glTexCoord2f( 0, 0 ); glVertex3f( 0.05f, 0.0 - 0.8f, 0.0 );
glTexCoord2f( 1, 0 ); glVertex3f( 0.05f, 0.0 - 0.8f, 0.1f );

//przednia œciana
glColor3f( 1, 0, 0 ); //czerwony
glTexCoord2f( 0, 1 ); glVertex3f( 0.05f, 0.2f, 0.1f );
glTexCoord2f( 0, 0 ); glVertex3f( 0.05f, 0.0 - 0.8f, 0.1f );
glTexCoord2f( 1, 0 ); glVertex3f( 0.0, 0.0 - 0.8f, 0.1f );
glTexCoord2f( 1, 1 ); glVertex3f( 0.0, 0.2f, 0.1f );

//lewa œciana
glColor3f( 1, 1, 0 ); //zó³ty
glTexCoord2f( 1, 1 ); glVertex3f( 0.0, 0.2f, 0.1f );
glTexCoord2f( 0, 1 ); glVertex3f( 0.0, 0.0 - 0.8f, 0.1f );
glTexCoord2f( 0, 0 ); glVertex3f( 0.0, 0.0 - 0.8f, 0.0 );
glTexCoord2f( 1, 0 ); glVertex3f( 0.0, 0.2f, 0.0 );
glEnd();
glScalef( 0.2, 0.2, 0.2 );

glTranslatef( 0.1, - 3.5, 0.2 );
glRotatef( 90, 0, 1, 0 );
glutSolidCylinder( 0.8, 0.1, 10, 10 );

glPopMatrix();
P-83609
Menos
Temat założony przez niniejszego użytkownika
» 2013-05-22 19:43:32
rozwiazaniem jest cos takiego:
C/C++
glTranslatef( - 1, 1, 0 );
glRotatef( czas, 2, 0, 0 );
glTranslatef( 1, - 1, 0 );

Najpierw przesuwamy od punktu (0,0,0) poczatku, do naszej pozycji w ktorej chcemy. Potem obracamy jak chcemy a potem powracamy do naszego punktu
P-83615
« 1 »
  Strona 1 z 1