change_model.c -3次元モデルの変更プログラム
#include
#include
#include "glut.h"
/* 3D-CGを変更する際の移動量 */
#define movesize 0.01
#define rotatesize 10
#define KEEP 1 /* 運動を表す文字定数 */
#define UP 2
#define DOWN 3
#define RIGHT 4
#define LEFT 5
#define FORWARD 6
#define BACK 7
#define ROTX 8
#define ROT_X 9
#define ROTY 10
#define ROT_Y 11
#define ROTZ 12
#define ROT_Z 13
/* 3D_CGの変更および描画を行なう関数 */
void change_model(int motion, int premotion)
{
int c;
c = motion;
if (c == KEEP) c = premotion;
/* 認識結果が */
switch (c) {
case UP : glTranslatef(0.0, movesize, 0.0); /* +y方向への並進運動 */
break;
case DOWN : glTranslatef(0.0, -movesize, 0.0); /* -y方向への並進運動 */
break;
case RIGHT : glTranslatef(movesize, 0.0, 0.0); /* +x方向への並進運動 */
break;
case LEFT : glTranslatef(-movesize, 0.0, 0.0); /* -x方向への並進運動 */
break;
case FORWARD : glTranslatef(0.0, 0.0, movesize*2); /* +z方向への並進運動 */
break;
case BACK : glTranslatef(0.0, 0.0, -movesize*2); /* -z方向への並進運動 */
break;
case ROTX : glRotatef(rotatesize, 1.0, 0.0, 0.0); /* +x軸回りの回転運動 */
break;
case ROT_X : glRotatef(-rotatesize, 1.0, 0.0, 0.0); /* -x軸回りの回転運動 */
break;
case ROTY : glRotatef(rotatesize, 0.0, 1.0, 0.0); /* +y軸回りの回転運動 */
break;
case ROT_Y : glRotatef(-rotatesize, 0.0, 1.0, 0.0); /* -y軸回りの回転運動 */
break;
case ROTZ : glRotatef(rotatesize, 0.0, 0.0, 1.0); /* +z軸回りの回転運動 */
break;
case ROT_Z : glRotatef(-rotatesize, 0.0, 0.0, 1.0); /* -z軸回りの回転運動 */
break;
default : break;
}
/* glBegin(GL_LINES);
glVertex2f(-2.0,2.0);
glVertex2f(-2.0,1.0);
glEnd();
glEnable(GL_LINE_STIPPLE);
glLineStipple(1, 0x0101);
glBegin(GL_LINES);
glVertex2f(-2.0,1.0);
glVertex2f(-1.0,1.0);
glEnd();
glLineStipple(1,0x00FF);
glBegin(GL_LINES);
glVertex2f(-2.0,1.0);
glVertex2f(-2.5,0.5);
glEnd();*/
glutSolidCube(0.7);
glPushMatrix();
glTranslatef(0.5,0.0,0.0);
glutWireCube(0.2);
glPopMatrix();
}
programのページへ戻る