20210322 滑鼠畫圖&GitHub程式
一開始先複習一下圖案的旋轉與移動
可參照底下的網址
https://2021graphics.blogspot.com/2021/03/blog-post_15.html
也可以把示範的圖案改掉
按鍵盤上的R可以把綠色框框內的數值全部重置
按鍵盤上的S可以將綠色框框內的程式碼順序對調
如果glTranslatef在上面的話
圖案會以自己為中心點旋轉(中心點跟著圖案移動)
(橘色為旋轉軸 綠色為旋轉方向)
如果glRotatef在上面的話
圖案會圍繞中心點旋轉(中心點不變)
我們一行一行來看程式碼都在做什麼
一開始的glBegin是用來畫圖的
而glScalef是用來調整大小的
所以這邊的車子變寬了!
#include <GL/glut.h>///使用GLUT外掛
#include <stdio.h>
float vx[2000],vy[2000];///用陣列存頂點
int N=0;///有N個頂點
void display()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);///清空
glBegin(GL_LINE_LOOP);
glColor3f(0,1,0);
for(int i=0;i<N;i++)
{
glVertex2f(vx[i],vy[i]);
}
glEnd();
glutSwapBuffers();///交換2倍的buffers
}
void mouse(int button,int state,int x,int y)///控制滑鼠
{
}
void motion(int x,int y)///移動
{
printf("%d %d\n",x,y);///把頂點記下來
vx[N]=(x-150)/150.0;///換算座標
vy[N]=-(y-150)/150.0;
N++;
display();///即時更新
}
int main(int argc,char** argv)
{
glutInit(&argc,argv);///GLUT初始設定
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);///顯示模式
glutCreateWindow("Draw");///開視窗
glutDisplayFunc(display);///要顯示的函式
glutMouseFunc(mouse);///使用滑鼠函式
glutMotionFunc(motion);///移動的函式
glutMainLoop();///主要的迴圈
}
如果想畫不一樣的圖形
只要把GL_LINE_LOOP改掉就可以了
可以改成GL_TRIANGLE_FAN跟GL_POLYGON
登入後先連到http://gist.github.com/
這樣就可以把程式碼放進去了
橘色框框的部分要輸入檔名跟副檔名
綠色框框的部分用來記錄這是什麼檔案
最後按下綠色按鈕就可以了!
並貼到部落格的HTML內
就會出現有排版跟顏色的程式碼了!





















沒有留言:
張貼留言