顯示具有 Week03 標籤的文章。 顯示所有文章
顯示具有 Week03 標籤的文章。 顯示所有文章

2019年9月26日 星期四

喬現在才來上課日常Week3

用鼠標繪圖















有小點點 (這密集的有點噁心 
















其他功能
















void draw() {
  fill(0,255,0);   ///填充顏色
  stroke(255,0,0);  ///線的顏色
  if(mousePressed){   ///if 按下滑鼠
  line(mouseX, mouseY, pmouseX, pmouseY);  ///開始繪圖
  }

}
















void draw() {
  if(key=='1') stroke(255,0,0);  ///按下鍵盤 改變顏色
  if(key=='2') stroke(255,255,0);
  if(key=='3') stroke(0,255,0);
  if(mousePressed){
  line(mouseX, mouseY, pmouseX, pmouseY);
  }

}
































void setup() {
  size(600, 400);
  fill(255, 0, 0);
  rect(0, 0, 50, 50);
  fill(255, 255, 0);
  rect(0, 50, 50, 50);
  fill(0, 255, 0);
  rect(0, 100, 50, 50);
  fill(0, 255, 255);
  rect(0, 150, 50, 50);
  fill(0, 0, 255);
  rect(0, 200, 50, 50);
  line(25, 250, 25-7, 400);
  line(25, 250, 25+7, 400);
}
void draw() {
  if (mouseX<50 && mousePressed) {
    if (mouseY<50) stroke(255, 0, 0);
    else if (mouseY<100) stroke(255, 255, 0);
    else if (mouseY<150) stroke(0, 255, 0);
    else if (mouseY<200) stroke(0, 255, 255);
    else if (mouseY<250) stroke(0, 0, 255);
    else {
      strokeWeight((mouseY-250)/10);
    }
  }
}
void mouseDragged() {
  if (mouseX>50 && mousePressed) {
    line(mouseX, mouseY, pmouseX, pmouseY);
  }
}
void keyPressed() {
  if (key=='1') stroke(255, 0, 0);
  if (keyCode==UP) line(300, 200, 300, 0);
  if (keyCode==DOWN) line(300, 200, 300, 400);
  if (keyCode==LEFT) line(300, 200, 0, 200);
  if (keyCode==RIGHT) line(300, 200, 600, 200);
}

2019年4月10日 星期三

week03

 
 

week03:

Translate(移動) Rotate(旋轉)以及Scale(放大縮小)

 
到老師的網址http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/下載windows data glut.dll,然後將windows解壓縮,並且將data的資料夾放進windows裡面
 

然後到網站打freeglut windows下載freeglut到桌面
 
接著到windows資料夾裡就能打開Transformation看到一台保時捷能調整Translate(移動) Rotate(旋轉)以及Scale(放大縮小)
 
接著打開codeblock,然後把原本的程式碼刪光光,並且自己打下列的程式碼上去

 

呼叫茶壺的程式碼

#include <GL/glut.h>
void display()
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc,char ** argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week03 translate");
    glutDisplayFunc(display);
    glutMainLoop();
}


2019年4月1日 星期一

week03

week03


主題 : 移動 Translate



>實做 : glTranslate(x,y,z)


(1)到 這裡 data、win32、gult32.dll 下載並解壓縮,
(同 week02 一、使用freeglut簡化程式)











(2)下載完之後點開資料夾中的 Transformation.exe












(同 week01 一、第一個GLUT程式)





























(4)開啟codeblocks>File>new>project>GLUT Project
(刪掉原本的程式碼貼上新的程式碼)












(以下為程式碼)



#include <GL/glut.h>


void display()

{
    glPushMatrix(); ///備份矩陣,保護好
    glTranslatef(0.2,0.2,0); ///Translate移動x,y,z,  f浮點數
     glutSolidTeapot(0.3);
    glPopMatrix(); ///還原矩陣,保護好
    glutSwapBuffers();

}

int main(int argc,char ** argv)
{

    glutInit( &argc,argv);  ///啟動GLUT

    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week03 translate");

    glutDisplayFunc(display);

    glutMainLoop();

}


2019年3月15日 星期五

week03


1. 下載3個檔案並解壓縮


2. 壓縮後將 data 及 glut32.dll 放入 windows 資料夾


3. 開啟 Transformation.exe


4. 便可開始自行調整數值及圖形



1. 如前幾周一樣的步驟,開啟一個GLUT檔


***https://www.transmissionzero.co.uk/software/freeglut-devel/   ///下載

freeglut 3.0.0 MinGW Package


2.


程式碼

#include <GL/glut.h>
void display()
{
    glPushMatrix(); ///備份矩陣
        glTranslatef(0.3, 0.3, 0); ///移動 (會改矩陣)
        glutSolidTeapot( 0.3 );
    glPopMatrix(); ///還原矩陣,下次才不會有舊的殘值
    glutSwapBuffers();
}

int main(int argc, char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week04");
    glutDisplayFunc(display);

    glutMainLoop();
}

2019年3月8日 星期五

PJ週記-Week03 之又冷又下雨排計程車還爆多人的一天

乳題,這幾天的天氣真是有夠棒的呢(◉◞౪◟◉ )

但還是要來上超認真爆肝小葉的課啦(◔౪◔)


(一)http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/

依照慣例先下載[data][win32][glut32.dll]
把資料用成下圖


接著打開Transformation就可以開始玩玩看啦
glTranslatef(-0.87,-0.13,-0.54)的三個參數分別可以調整 x y z




按右鍵也可以更換圖形




(二)用CodeBlocks移動圖形位置

上次有用CodeBlocks畫出一個茶壺
這次希望能夠稍微微調茶壺的位置


打上茶壺的程式碼後,在最上面加上一句
glTranslated( 0.2 , 0.2 , 0 );

這行就能調整茶壺的 x y z 位置
但是只加上這行還是會有小小的BUG (.____.    )

點幾下他就會影分身術啊啊啊啊

所以為了解決這個BUG










DannyLo筆記 Week03

 :Translation(移動)   

認識Translation

1.前置動作
http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/下載 data win32 glut32.dll
windows.zip解壓縮 把data.zip中的data放入 glut32.dll也放入
windows資料夾中
(windows存放範例檔 data存放模型檔)


2.開啟小葉老師的範例檔
       註:數值部分可以按住滑鼠左鍵上下拖曳更改 右鍵可Reset數值



開始寫程式瞜

1.開啟GLUTPROJECT (FILE/NEW/PROJECT)



2.重複上周 第一個GLUT程式 步驟開啟程式
   註:學校電腦桌面有 2017電腦圖學_軟體需求 有freeglut程式

3.不加glPushMatrix(); 跟 glPopMatrix();的話會出問題


                                                                          BEFORE


                                                                          AFTER



座標 應用小畫家來做  ctrl+e可以更改小畫家的比例  (x-中間點)/最大值.0
因為小畫家中間點 是在左上角的(0,0) 




CODEBLOCK 的比例 300*300 所以一半為 150



補充:滑鼠移動


學渣的奮鬥史-3

今天下大雨加上寒流

真D冷


今天上的是移動

從小葉老師提供的資源開啟一個可以透過改變座標以移動物件的東西



透過上次茶壺的程式碼

寫一行移動座標的程式碼

glTranslated( 0.2 , 0.2 , 0 );

逗點分隔開來的分別是

glTranslated( x , y , z );

程式寫好後,由滑鼠在點一下視窗會讓程式碼在執行一次

成果大約如下圖


論及為什麼會出現第二個茶壺呢

因為程式中的bug會造成執行的部分重複

加上兩行程式碼就能夠避面這個情況

分別是
glPushMatrix ( ) ; //備份矩陣,保護好程式

glPopMatrix ( ) ; //還原矩陣,跟上面的備份矩陣一起使用

使用方式如下

glPushMatrix();//備份矩陣,保護好程式
        glTranslated(0.2,0.2,0);//移動茶壺的程式
        glutSolidTeapot(0.3);//實心茶壺
glPopMatrix();//還原矩陣,跟上面的備份矩陣一起使用

使用後就能避免掉茶壺會重複移動的問題了

加上glutMotionFunc(motion);

在建立一個motion的函式讓他能運作

要記得加float以定義x,y座標值

motion函式內放

x=nowx;//更新x座標
y=nowy;//更新y座標
display( );//再次呼叫display讓他再做一次以更新畫面

加上

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

以更新buffer跟depth

接著就能在視窗內讓茶壺跟著滑鼠移動了


今天就到這裡

下課!!!!





小葉老師的英文小教室

移動 Translate

耀鑫的筆記 Week03

1.開啟小葉老師的網站下載範例檔案

將標有紅圈的檔案下載下來
(1)先將windows解壓縮到windows資料夾
(2)再將data解壓縮到windows資料夾
(3)最後再把glut32.dll也丟進去

資料夾最後該有的東西
可以透過滑鼠拖拉與右鍵調整參數
2.重複上周的步驟搜尋freeglut windows把檔案下載下來,然後將原本的內容刪除並打上


結果(但是只要移動視窗就會導致圖片錯位)

所以要加上兩行程式碼來保護它不錯位
glPushMatrix(); 代表開始
glPopMatrix(); 代表結束
如圖將畫圖的程式碼上下包住
3.用小畫家找出圖片座標點

在小畫家中開啟圖片
左下角會出現座標點

利用座標點把圖片畫出來

電腦圖學 ---3


電腦圖學 ---3

輸入網址  http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/ 

⧭移動

下載 
data (裡面有MAYA圖案,移動到Windows資料夾)   
win32 (解壓縮會有Windows資料夾)   
glut32.dll (移動到Windows資料夾)


data (移動到Windows資料夾)   )   
glut32.dll (移動到Windows資料夾)

點取 Transformation

就可以移動 glTranslatef( X , Y , Z ) ;

⧭利用滑鼠移動茶壺


程式碼
#include <GL/glut.h>
float x=0,y=0; ///設X Y軸變數
void display ()
{
    ///glut開頭,表示是GLUT的程式
    /// glPushMatrix(); glPopMatrix(); 通常會做縮排
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();  ///備份矩陣,保護
        glTranslatef((x-150)/150.0, -(y-150)/150.0 ,0);///Translate 移動 X Y Z,f是浮點數
        glutSolidTeapot(0.3);
    glPopMatrix(); ///還原矩陣,保護
    glutSwapBuffers();
}
void motion(int nowx, int nowy)
{
    x=nowx; y=nowy; ///更新X Y
    display(); ///再畫display(),用滑鼠移動畫面會跟著動
}
int main(int argc,char**argv) ///main參數
{
    glutInit(&argc, argv);  ///啟動GLUT
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);  ///啟動GLUT的Display的Mode模式 : 兩倍Buffer,有3D的深度
    glutCreateWindow("Week03 translate");
    glutDisplayFunc(display);  ///Display的函式是display

    glutMotionFunc(motion); ///滑鼠有動作motion時,要叫motion()
    glutMainLoop();
}


⟰第三周回家作業

今天的主角 --- Yo Yo Man 


程式碼

#include <GL/glut.h>  ///使用GL/glut外掛
#include <stdio.h>
#include <math.h>
float nowx=0,nowy=0; ///設X Y軸變數
void mouse(int button, int state, int x,int y)
{
    nowx = (x-150)/150.0; nowy = -(y-150)/150.0 ,0;
    printf("glTranslatef(%f,%f,0;\n",nowx,nowy);
}
void display ()
{
    ///glut開頭,表示是GLUT的程式
    /// glPushMatrix(); glPopMatrix(); 通常會做縮排
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();  ///備份矩陣,保護
        glTranslatef(nowx,nowy,0);

        glColor3f(255,215,0);
        glBegin(GL_POLYGON);  ///頭
            for(float angle=0; angle<3.14159265358979*2; angle+=0.1)
            {
                glVertex2f(0.8*cos(angle)/* /數字+位置 */,0.8*sin(angle));
                          ///園的大小   ///數字越大圓越大,-0.4 指移動的位置
            }
        glEnd();

        glColor3f(255,255,255);
        glBegin(GL_POLYGON);///頭
            for(float angle=0; angle<3.14159265358979; angle+=0.1)
            {
                glVertex2f(0.8*cos(angle),0.8*-sin(angle));
            }
        glEnd();

        glBegin(GL_POLYGON); ///Y
        glColor3f(255,0,0); ///顏色
        glVertex2f(-0.5,0.75);   ///座標
        glVertex2f(-0.4,0.8);
        glVertex2f(0,0.5);
        glVertex2f(-0.2,0.45);
        glEnd();

        glBegin(GL_POLYGON);///Y
        glColor3f(255,0,0);
        glVertex2f(0,0.5);   ///座標
        glVertex2f(0.4,0.8);
        glVertex2f(0.5,0.75);
        glVertex2f(0.2,0.45);
        glEnd();

        glBegin(GL_POLYGON);///Y
        glColor3f(255,0,0);
        glVertex2f(-0.1,0.5);   ///座標
        glVertex2f(0.1,0.5);
        glVertex2f(0.1,0.2);
        glVertex2f(-0.1,0.2);
        glEnd();

        glColor3f(0,0,0);
        glBegin(GL_POLYGON);///眼睛邊框
            for(float angle=0; angle<3.14159265358979*2; angle+=0.1)
            {
                glVertex2f(0.45*-cos(angle)/1.4995+0.4,0.45*sin(angle)/1.4995+0.15);
                         ///園的大小     ///數字越大圓越大,-0.4 指移動的位置
            }
        glEnd();

        glColor3f(0,0,0);
        glBegin(GL_POLYGON);///眼睛邊框
            for(float angle=0; angle<3.14159265358979*2; angle+=0.1)
            {
                glVertex2f(0.45*cos(angle)/1.4995-0.4,0.45*sin(angle)/1.4995+0.15);
                          ///圓的大小     ///數字越大圓越大,-0.4 指移動的位置
            }
        glEnd();


        glColor3f(245,222,179);
        glBegin(GL_POLYGON);///眼睛外
            for(float angle=0; angle<3.14159265358979*2; angle+=0.1)
            {
                glVertex2f(0.4*-cos(angle)/1.5+0.4,0.4*sin(angle)/1.5+0.15);
            }
        glEnd();

        glColor3f(245,222,179);
        glBegin(GL_POLYGON);///眼睛外
            for(float angle=0; angle<3.14159265358979*2; angle+=0.1)
            {
                glVertex2f(0.4*cos(angle)/1.5-0.4,0.4*sin(angle)/1.5+0.15);
            }
        glEnd();

        glColor3f(0,0,0);
        glBegin(GL_POLYGON);///眼睛內
            for(float angle=0; angle<3.14159265358979*2; angle+=0.1)
            {
                glVertex2f(0.3*-cos(angle)/2+0.4,0.3*sin(angle)/2+0.15);
            }
        glEnd();

        glColor3f(0,0,0);
        glBegin(GL_POLYGON);///眼睛內
            for(float angle=0; angle<3.14159265358979*2; angle+=0.1)
            {
                glVertex2f(0.3*cos(angle)/2-0.4,0.3*sin(angle)/2+0.15);
            }
        glEnd();

        glColor3f(255,255,255);
        glBegin(GL_POLYGON);///眼睛內
            for(float angle=0; angle<3.14159265358979*2; angle+=0.1)
            {
                glVertex2f(0.1*-cos(angle)/2+0.5,0.1*sin(angle)/2+0.1);
            }
        glEnd();

        glColor3f(255,255,255);
        glBegin(GL_POLYGON);///眼睛內
            for(float angle=0; angle<3.14159265358979*2; angle+=0.1)
            {
                glVertex2f(0.1*cos(angle)/2-0.3,0.1*sin(angle)/2+0.1);
            }
        glEnd();

        glColor3f(255,0,0);
        glBegin(GL_POLYGON);///嘴巴
            for(float angle=0; angle<3.14159265358979; angle+=0.1)
            {
                glVertex2f(0.4*cos(angle)/1,0.4*-sin(angle)/1-0.3);
            }
        glEnd();

        glColor3f(255/255.0,128/255.0,128/255.0);
        glBegin(GL_POLYGON);///嘴巴
            for(float angle=0; angle<3.14159265358979; angle+=0.1)
            {
                glVertex2f(0.2*cos(angle)/1,0.2*-sin(angle)/1-0.4);
            }
        glEnd();


    glPopMatrix(); ///還原矩陣,保護
    glutSwapBuffers();
}

int main(int argc,char**argv) ///main參數
{
    glutInit(&argc, argv);  ///啟動GLUT
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);  ///啟動GLUT的Display的Mode模式 : 兩倍Buffer,有3D的深度
    glutCreateWindow("Week03 translate");
    glutDisplayFunc(display);  ///Display的函式是display
    glutMouseFunc(mouse); ///滑鼠有動作motion時,要叫motion()
    glutMainLoop();

}