3DCG上の動きについて
物を表示させてx軸・y軸・z軸について回転、物を拡大させたり、
縮小させたりする事は出来ます。
どこをどのようにすれば、物を縦や横に動かす事が出来るのか教えて下さい。
下に自分でやってみたプログラムを書いておきます。
光の強さ、main関数等の所は、スペース上、省略してあります。
void light_enable(){
glenable(GL_LIGHTING);
glenable(GL_LIGHT0);
glenable(GL_DEPTH_TEST);
}
void set_light(void){
light_enable();
glMaterialfv(GL_FRONT,GL_SPECULAR,lite_spec);
glMaterialfv(GL_FRONT,GL_SHININESS,lite_shine);
glLightfv(GL_LIGHT0,GL_POSITION,lite_post);
}
int anime(){
int i,move;
for(i=0;i>=10;i++){
if(i==10){
for(i=10;i<0;i--){
move+=move;
}
}
}
return 0;
}
void modeldraw(void){
glpushmatrix();
gclearbuffers();
gltranslated(1.0,1.0,1.0);
glrotatef((float)rot_x,1.0,0.0,0.0);
glrotatef((float)rot_y,0.0,1.0,0.0);
glrotatef((float)rot_z,0.0,0.0,1.0);
glMaterialfv(GL_FRONT,GL_DIFFUSE,obj_diffuse1);
glMaterialfv(GL_FRONT,GL_AMBIENT,obj_ambient1);
glMaterialfv(GL_FRONT,GL_SPECULAR,obj_specular1);
glMaterialfv(GL_FRONT,GL_SHININESS,obj_shininess);
glscaled(sscale*0.3,sscale*0.3,sscale*0.3);
glutSolidSphere(1.0,40,50);
glpopmatrix();
glutswapbuffers();
glflush();
}
void key_press(unsigned char key, int xk, int yk){
if(key=='x')rot_x=(rot_x+5)%360;
else if(key=='y')rot_y=(rot_y+5)%360;
else if(key=='z')rot_z=(rot_z+5)%360;
else if(key=='S')sscale=sscale*1.2;
else if(key=='s')sscale=sscale/1.2;
else if(key=='a')anime();
modeldraw();
}
お礼
回答ありがとうございます。