Programkód (tank2.c) | ModelView mátrix aktuális tartalma | Veremművelet | Mátrixverem |
/* ModelView a verembe */ glPushMatrix(); /* R1: minden objektum elforgatasa, hogy jol lathato legyen */ glRotatef(45, 0.5f, 1.0f, 0.5f); glColor3f(0.5, 0.5, 0.5); glPushMatrix(); /* S1: also resz meretre alakitasa */ glScalef(1.2, 0.7, 2.0); /* kocka: origo kozeppontu */ glutSolidCube(30); glPopMatrix(); /* Ty: felso forgo resz es agyucso pozicionalasa */ glTranslatef(0.0, 17.5, 0.0); /* Ry: felso forgo resz es agyucso elforgatasa y tengely korul */ glRotatef(yRot, 0.0f, 1.0f, 0.0f); glPushMatrix(); /* S2: felso forgo resz meretre alakitasa */ glScalef(1.0, 0.7, 1.7); /* kocka: origo kozeppontu */ glutSolidCube(20); glPopMatrix(); glPushMatrix(); /* T1: agyucso a felso forgo resz ele */ glTranslatef(0.0, -1.5, 17.0); /* R2: agyucso emelkedese */ glRotatef(xRot, 1.0f, 0.0f, 0.0f); /* S3: agyucso nyujtasa 7-szeresre */ glScalef(1.0, 1.0, 7.0); /* T2: kocka "hatso" lapjanak kozepe legyen az origoban */ glTranslatef(0.0, 0.0, 2.5); /* kocka: origo kozeppontu */ glutSolidCube(5); glPopMatrix(); // Restore the matrix state glPopMatrix(); |
I I I * R1 I * R1 I * R1 * S1 Alkalmazása: kocka csúcspontjaira. I * R1 I * R1 * Ty I * R1 * Ty * Ry I * R1 * Ty * Ry I * R1 * Ty * Ry * S2 Alkalmazása: kocka csúcspontjaira. I * R1 * Ty * Ry I * R1 * Ty * Ry I * R1 * Ty * Ry * T1 I * R1 * Ty * Ry * T1 * R2 I * R1 * Ty * Ry * T1 * R2 * S3 I * R1 * Ty * Ry * T1 * R2 * S3 * T2 Alkalmazása: kocka csúcspontjaira. I * R1 * Ty * Ry I |
--> --> <-- --> <-- --> <-- <-- |
Üres (I) (I * R1), (I) (I) (I * R1 * Ty * Ry), (I) (I) (I * R1 * Ty * Ry), (I) (I) Üres |