2015年3月12日 星期四

Week03_形狀應用_呂登祐

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 作業 "互助同學"上標記我喔!(ゝω・)





沒有留言:

張貼留言