- void Karussell::SolidCube(GLfloat length)
- {
- float matrix[16];
- float vec[4];
- float* erg;
- glGetFloatv(GL_MODELVIEW_MATRIX,matrix);
- if (!MatrixInvert(matrix))
- {
- cerr << "!!Singuläre Modelviewmatrix gefunden!!";
- return;
- }
- transposedMatrix(matrix);
- GLfloat e = length / 2;
- glBegin(GL_QUADS);
- //Oben
- vec[0]=0;vec[1]=1;vec[2]=0;vec[3]=1;
- erg = MatVecProduct(matrix,vec);
- glNormal3fv(erg);
- delete[] erg;
- glVertex3f(-e, e,-e);
- glVertex3f(-e, e, e);
- glVertex3f( e, e, e);
- glVertex3f( e, e,-e);
- //Unten
- vec[0]=0;vec[1]=-1;vec[2]=0;vec[3]=1;
- erg = MatVecProduct(matrix,vec);
- glNormal3fv(erg);
- delete[] erg;
- glVertex3f(-e,-e,-e);
- glVertex3f( e,-e,-e);
- glVertex3f( e,-e, e);
- glVertex3f(-e,-e, e);
- //links
- vec[0]=-1;vec[1]=0;vec[2]=0;vec[3]=1;
- erg = MatVecProduct(matrix,vec);
- glNormal3fv(erg);
- delete[] erg;
- glVertex3f(-e, e,-e);
- glVertex3f(-e,-e,-e);
- glVertex3f(-e,-e, e);
- glVertex3f(-e, e, e);
- //rechts
- vec[0]=1;vec[1]=0;vec[2]=0;vec[3]=1;
- erg = MatVecProduct(matrix,vec);
- glNormal3fv(erg);
- delete[] erg;
- glVertex3f( e,-e,-e);
- glVertex3f( e, e,-e);
- glVertex3f( e, e, e);
- glVertex3f( e,-e, e);
- //vorn
- vec[0]=0;vec[1]=0;vec[2]=1;vec[3]=1;
- erg = MatVecProduct(matrix,vec);
- glNormal3fv(erg);
- delete[] erg;
- glVertex3f(-e,-e, e);
- glVertex3f( e,-e, e);
- glVertex3f( e, e, e);
- glVertex3f(-e, e, e);
- //hinten
- vec[0]=0;vec[1]=0;vec[2]=-1;vec[3]=1;
- erg = MatVecProduct(matrix,vec);
- glNormal3fv(erg);
- delete[] erg;
- glVertex3f(-e,-e,-e);
- glVertex3f(-e, e,-e);
- glVertex3f( e, e,-e);
- glVertex3f( e,-e,-e);
- glEnd();
- };