Shapes
We can go to http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/ and dowload red circle with the picture. :D
Try it ! XD
下個步驟: 5行程式碼
#include <GL/glut.h> ///呼叫GL/glut的功能
void display() ///用來畫東西的顯示函式
{
glColor3f(1,1,0);///3指3個顏色,f指float
glutSolidTeapot(0.4); ///用glut畫一個實心的茶壺
glFlush(); ///把他沖出去(從記憶體把東西叫出來)
}
int main(int argc, char **argv) ///main()的參數,也可寫成int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutCreateWindow("林周罵尬李拚了!"); ///開一個glut視窗(小駱駝命名法)
glutDisplayFunc(display);
glutMainLoop(); ///glut的主要迴圈,卡住用的
return 0;
}
調整數值,做出3個茶壺,以及顏色。
#include <GL/glut.h> ///呼叫GL/glut的功能
void display() ///用來畫東西的顯示函式
{
glColor3f(1,0,0);///3指3個顏色,f指float
glutSolidTeapot(0.5); ///用glut畫一個實心的茶壺
glColor3f(0,1,0);
glutSolidTeapot(0.4);
glColor3f(0,0,1);
glutSolidTeapot(0.3);
glFlush(); ///把他沖出去(從記憶體把東西叫出來)
}
int main(int argc, char **argv) ///main()的參數,也可寫成int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutCreateWindow("林周罵尬李拚了!"); ///開一個glut視窗(小駱駝命名法)
glutDisplayFunc(display);
glutMainLoop(); ///glut的主要迴圈,卡住用的
return 0;
}
換背景顏色
#include <GL/glut.h> ///呼叫GL/glut的功能
void display() ///用來畫東西的顯示函式
{
glClearColor(1, 1, 1, 1);///Clear清除所要選的顏色(白色)
glClear(GL_COLOR_BUFFER_BIT);///用來清除的背景顏色BUFFER
glColor3f(1, 0, 0);///3指3個顏色,f指float
glutSolidTeapot(0.5); ///用glut畫一個實心的茶壺
glColor3f(0,1,0);
glutSolidTeapot(0.4);
glColor3f(0,0,1);
glutSolidTeapot(0.3);
glFlush(); ///把他沖出去(從記憶體把東西叫出來)
}
int main(int argc, char **argv) ///main()的參數,也可寫成int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutCreateWindow("林周罵尬李拚了!"); ///開一個glut視窗(小駱駝命名法)
glutDisplayFunc(display);
glutMainLoop(); ///glut的主要迴圈,卡住用的
return 0;
}
劃出多邊形(先定位座標),並且上色
#include <GL/glut.h> ///呼叫GL/glut的功能
void display() ///用來畫東西的顯示函式
{
glClearColor(0.7, 1, 1, 1);///Clear清除所要選的顏色
glClear(GL_COLOR_BUFFER_BIT);///用來清除的背景顏色BUFFER
glBegin(GL_POLYGON);
glColor3f(1, 1, 0);///3指3個顏色,f指float
glVertex2f(0, 0);///頂點座標
glVertex2f(1, 0);
glVertex2f(0, 1);
glEnd();
glBegin(GL_POLYGON); ///POLYGON多邊形
glColor3f(1, 0, 0);
glVertex2f(0, 0);
glColor3f(0, 1, 0);
glVertex2f(-1, 0);
glColor3f(0, 0, 1);
glVertex2f(0, -1);
glEnd();
glFlush(); ///把他沖出去(從記憶體把東西叫出來)
}
int main(int argc, char **argv) ///main()的參數,也可寫成int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutCreateWindow("林周罵尬李拚了!"); ///開一個glut視窗(小駱駝命名法)
glutDisplayFunc(display);
glutMainLoop(); ///glut的主要迴圈,卡住用的
return 0;
}
簡單幾何圖形 + 一些心得
(謎之音:圖片是誤導向,娛樂用的!GL不能插入圖檔。)
大家好,剛開始要畫圖行一定很沒有頭緒,沒關西大家都這樣過來的,以下就來簡單介紹
幾個我們作畫所要用到的圖形吧!
三角形:
我們可以用多邊形或是用三角形來作畫!
glBegin();的函示我們可以帶入,多邊形 GL_POLYGON或是 三角形 GL_TRIANGLES
他們的執行結果都差不多!如下圖:
座標點自己設摟!
基本上座標順序是這樣的:
glColor3f(1, 0, 0);///顏色,R(red)G(green)B(blue)三色
glVertex2f(1,0);///x1,y1
glVertex2f(0,1);///x2,y2
glVertex2f(-1,0);///x3,y3
所以可以依造個人喜好定位!
圓形:
圓形跟橢圓差不多,套進公式即可~~ (*・ω・)ノ
但是要切記!!因為我們有運用到sin,cos運算式所以標頭檔要記的加<math.h>!
四邊形跟三角形基本上都有個共通點,沒錯聰名的你已經隱約發現了吧!
他們都是多鞭刑!! GL_POLYGON
他們都是多邊刑!! GL_POLYGON
他們都是多變刑!! GL_POLYGON
原理類似,只是變四個點! 我就不多說了!
線的部分也是!兩點一線! 我們可以用glBegin(GL_LINES);函示來寫,但因為他是GL_LINES代表多條,所以一次有四個點(2條線),切記!
glBegin(GL_LINES);///直線
glColor3f(0, 0, 0);///顏色自己設~~
glVertex2f(-0.14,0.5);///x1,y1
glVertex2f(-0.2,0.6);///x2,y2
glVertex2f(0.14,0.5);///x3,y3
glVertex2f(0.2,0.6);///x4,y4
點座標順序大致是醬!也是自己定位 :D
點的話,大概是這樣,跟線的原理一樣,把函式改成 glBegin(GL_POINTS)就好摟~~ヾ(○゜▽゜○)
點的應用加個for迴圈就變成曲線拉~~
有任何問題,歡迎在底下留言喔!或是有錯也可請多多指教 XD
*******************************************************************
基本工具我們大概都學會了! 再來就是我們發揮創意力的時候了! (*ゝω・*)ノ
畫圖訣竅就是多Try~~打程式也是喔!
其實,這次作業沒有很難,函示工具了解一下然後就可以應用摟!我覺得難是難在座標點
上,需要計算一下!(計算公式請google吧!)
最後奉上我這次的作業圖案~~ヽ(•´з`•)ノ♬
如果您覺得這篇文章對您有有幫助~~拜託請在moodle 作業 "互助同學"上標記我喔!(ゝω・)
沒有留言:
張貼留言