#include <GL/glut.h>///使用glut外掛
#include <stdio.h>///因為要printf
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空
glutSolidTeapot(0.3);
glutSwapBuffers();///交換兩倍的buffers,更新畫面
}
void Mouse(int button,int state,int x,int y)///左中右鍵,上下,x座標,y座標
{
printf("button:%d state:%d x:%d y:%d\n",button,state,x,y);///印出值
}
int main(int argc,char**argv)///glut初始設定
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);///顯示模式
glutCreateWindow("WEEK04");///視窗
glutDisplayFunc(display);///顯示的函示
glutMouseFunc(Mouse);///Mouse函式
glutMainLoop();///主要迴圈
}
![]() |
#include <GL/glut.h>///使用glut外掛
int N=0,vx[3000],vy[3000];///放點3000個
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空
glBegin(GL_LINE_LOOP);
for(int i=0;i<N;i++)
{
glVertex2f((vx[i]-150)/150.0,-(vy[i]-150)/150.0);///減一半 再除一半 ,加負號 減一半 再除一半
}
glEnd();
glutSwapBuffers();///交換兩倍的buffers
}
void motion(int x,int y)///x座標,y座標
{
vx[N]=x,vy[N]=y;///把vx vy值存起來
N++;
display();///邊動mouse motion 邊畫display
}
int main(int argc,char**argv)///glut初始設定
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);///顯示模式
glutCreateWindow("WEEK04");///視窗
glutDisplayFunc(display);///顯示的函示
glutMotionFunc(motion);///mouse motion在動
glutMainLoop();///主要迴圈
}
![]() |
粗箭頭是拇指方向 細箭頭是旋轉方向 用右手安培定律理解 |
![]() | |
|





沒有留言:
張貼留言