GL應用
TRT:
glTranslatef(0.25,0,0);///中心
glRotatef(angle,0,0,1);///旋轉
glTranslatef(0.25,0,0);///中心
#今日教學
#include <GL/glut.h>///(0)使用GLUT外掛
float vx[2000],vy[2000];///準備一堆頂點,等一下要畫
#include <stdio.h>
int N=0; ///有N個頂點
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );///清
glPushMatrix();///備份矩陣
glRotatef(angle,0,0,1);///旋轉
glScalef(0.5,0.1,0.1);///調成細長
glColor3f(0.3,0.3,1.0);///藍色
glutSolidCube(1);///方塊
glPopMatrix();
glutSwapBuffers();///交換兩倍的Buffers
}
void motion(int x,int y)
{
angle++;
display();
}
int main(int argc, char**argv)///???以前是int main()
{
glutInit(&argc,argv);///(1)GLUT初始設定
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
glutCreateWindow("08160816旋轉跳躍");///(3)開窗
glutDisplayFunc(display);///(4)等一下要顯示的函式(display顯示函式)
//glutMouseFunc(mouse);///TODO:(1)mouse滑鼠的程式
glutMotionFunc(motion);///TODO:(1)mouse滑鼠的程式
glutMainLoop();///(5)主要迴圈
}
自己旋轉:
1.在中心移動
2.手臂轉
#include <GL/glut.h>///(0)使用GLUT外掛
float vx[2000],vy[2000];///準備一堆頂點,等一下要畫
#include <stdio.h>
int N=0; ///有N個頂點
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );///清空
glPushMatrix();///備份矩陣
glRotatef(angle++,0,0,1);///旋轉
glScalef(0.5,0.1,0.1);///調成細長
//glColor3f(0.3,0.3,1.0);///藍色
glTranslatef(-0.25,0,0);
glutSolidCube(1);///方塊
glPopMatrix();
glutSwapBuffers();///交換兩倍的Buffers
}
void motion(int x,int y)
{
angle++;
display();
}
int main(int argc, char**argv)///???以前是int main()
{
glutInit(&argc,argv);///(1)GLUT初始設定
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
glutCreateWindow("08160816旋轉跳躍");///(3)開窗
glutIdleFunc(display);///idle很閒的時候,一直做
glutDisplayFunc(display);///(4)等一下要顯示的函式(display顯示函式)
glutMotionFunc(motion);///TODO:(1)mouse滑鼠的程式
glutMainLoop();///(5)主要迴圈
}
3.手臂與手肘轉動
#include <GL/glut.h>///(0)使用GLUT外掛
float vx[2000],vy[2000];///準備一堆頂點,等一下要畫
#include <stdio.h>
int N=0; ///有N個頂點
float angle=0;
void hand()
{
glPushMatrix();///備份矩陣
glScalef(0.5,0.1,0.1);///調成細長
glutSolidCube(1);///方塊
glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );///清空
glPushMatrix();///備份矩陣
glTranslatef(-0.25,0,0);
glRotatef(angle,0,0,1);///旋轉
glTranslatef(-0.25,0,0);
hand();
glPushMatrix();///備份矩陣
glTranslatef(-0.25,0,0);
glRotatef(angle,0,0,1);///旋轉
glTranslatef(-0.25,0,0);
hand();
glPopMatrix();
glPopMatrix();
glutSwapBuffers();///交換兩倍的Buffers
angle++;
}
void motion(int x,int y)
{
angle++;
display();
}
int main(int argc, char**argv)///???以前是int main()
{
glutInit(&argc,argv);///(1)GLUT初始設定
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
glutCreateWindow("08160816旋轉跳躍");///(3)開窗
glutIdleFunc(display);///idle很閒的時候,一直做
glutDisplayFunc(display);///(4)等一下要顯示的函式(display顯示函式)
glutMotionFunc(motion);///TODO:(1)mouse滑鼠的程式
glutMainLoop();///(5)主要迴圈
}
4.雙臂轉轉

#include <GL/glut.h>///(0)使用GLUT外掛
float vx[2000],vy[2000];///準備一堆頂點,等一下要畫
#include <stdio.h>
int N=0; ///有N個頂點
float angle=0;
void hand()
{
glPushMatrix();///備份矩陣
glScalef(0.5,0.1,0.1);///調成細長
glutSolidCube(1);///方塊
glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );///清空
glPushMatrix();///備份矩陣
glTranslatef(-0.25,0,0);
glRotatef(angle,0,0,1);///旋轉
glTranslatef(-0.25,0,0);
hand();///手臂
glPushMatrix();///備份矩陣
glTranslatef(-0.25,0,0);
glRotatef(angle,0,0,1);///旋轉
glTranslatef(-0.25,0,0);
hand();///手肘
glPopMatrix();
glPopMatrix();
glPushMatrix();///備份矩陣
glTranslatef(0.25,0,0);
glRotatef(-angle,0,0,1);///旋轉
glTranslatef(0.25,0,0);
hand();
glPushMatrix();///備份矩陣
glTranslatef(+0.25,0,0);
glRotatef(-angle,0,0,1);///旋轉
glTranslatef(+0.25,0,0);
hand();
glPopMatrix();
glPopMatrix();
glutSwapBuffers();///交換兩倍的Buffers
angle++;
}
void motion(int x,int y)
{
angle++;
display();
}
int main(int argc, char**argv)///???以前是int main()
{
glutInit(&argc,argv);///(1)GLUT初始設定
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
glutCreateWindow("08160816旋轉跳躍");///(3)開窗
glutIdleFunc(display);///idle很閒的時候,一直做
glutDisplayFunc(display);///(4)等一下要顯示的函式(display顯示函式)
glutMotionFunc(motion);///TODO:(1)mouse滑鼠的程式
glutMainLoop();///(5)主要迴圈
}
**********************************************************************
光線程式
const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };
/////////////////////
const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f };
const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
const GLfloat high_shininess[] = { 100.0f };
沒有留言:
張貼留言