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

2017年6月30日 星期五

Week 04 語璇電圖

一、使用滑鼠點擊得到座標畫圖
1.程式

















加入stdio.h , math.h
然後加入
void mouse(int button,int state,int x, int y)
{
    printf("%d %d %d %d\n", button, state, x, y);
}
int main(int argc, char *argv[])
{
    glutMouseFunc(mouse);
}
印出滑鼠點擊的狀態和座標
button : 0=左鍵 2=右鍵 1=中鍵
state : 0=按下 1=放開

2.結果
按下:












放開:










二、用滑鼠點擊改變顏色











加入

void mouse(int button,int state,int x, int y)
{
    glColor3f(1,x/300.0,y/300.0);
    glutPostRedisplay();
}

點擊左上角變成紅色

三、使用滑鼠拖曳連續改變顏色
程式













加入
void motion(int x, int y)
{
    printf("%d %d\n", x, y);
    glColor3f(1,x/300.0,y/300.0);
    glutPostRedisplay();
}
int main(int argc, char *argv[])
{
    glutMotionFunc(motion);
}

點擊左鍵移動改變顏色


四、使用滑鼠作標做出小精靈
1.程式



2017年4月26日 星期三

Week 04 一權的上課筆記

1.下載 [data] [win32] [gult32.dll] 壓縮檔並進行解壓縮到桌面。
2. [window] 檔案開啟並合併[data] [gult32.dll] 檔案到裡面.




3.開啟GLUT專案,輸入上周的程式碼,新增:glTranlatef(0,0,0);,使茶壺可以改變座標位置

4.新增motion程式碼,滑鼠拖曳可移動茶壺


程式碼:#include <GL/glut.h>
float mouseX=0, mouseY=0;///x、y座標數值設定
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(mouseX,mouseY,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}

void motion(int x, int y)
{
    mouseX = (x-150)/150.0;///滑鼠座標修正
    mouseY = -(y-150)/150.0;
    glutPostRedisplay();
}

int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04160585's model");

    glutMotionFunc(motion);
    glutDisplayFunc(display);
    glutMainLoop();
}

5.拖曳滑鼠可使茶壺放大縮小

程式碼:
#include <GL/glut.h>
float mouseX=0, mouseY=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glScalef(mouseX,mouseY,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}

void motion(int x, int y)
{
    mouseX = (x-150)/150.0;/// x/300.0
    mouseY = -(y-150)/150.0;/// y/300.0
    glutPostRedisplay();///貼個便利貼 Post便利貼,告訴GLUT
    ///要重畫畫面 Re-display
}

int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("04162664 Translate Rotate Scale");

    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();
}

2017年4月9日 星期日

Week04陳冠霖的上課筆記

本周課程:
到老師的網站(http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/),將Windowsdataglut32.dll下載下來,並解壓縮放在桌面。
解壓縮後,將data、glut32.dll放到Windows資料夾裡。
Transformation的畫面
打開Windows資料夾,執行Transformation,畫面中有glTranslatefglRotatefglScalefglBeing,分別是移動旋轉縮放大小開始的程式碼。

用CodeBlocks產生GLUT project。
將GLUT project的程式碼,將多餘的程式碼刪掉,改寫成上週教的畫茶壺的程式碼。
程式碼如下:
#include <GL/glut.h>
static void display(void)
{
    glutSolidTeapot(0.3);~~~畫茶壺。
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display);
    glutMainLoop();
}
移動的茶壺
在原本的程式碼中的display函式中加入0程式碼,茶壺就能移動了。
以下是程式碼:(多加入的用紅色顯示)
#include <GL/glut.h>
#include <stdlib.h>
static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);~~~移除之前的顏色,移除之前的深度
    glPushMatrix();~~~備份矩陣
        glTranslatef(0.5,0,0);~~~移動~~~括號部分是按順序代表X軸、Y軸、Z軸
        glutSolidTeapot(0.3);
    glPopMatrix();~~~還原矩陣
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display);
    glutMainLoop();
}
右邊是平面系統座標、左邊是滑鼠座標
這張圖是為了讓我們了解兩個座標之間的差異,進而讓大家能更好去了解平面座標是怎麼去轉換成滑鼠座標。
滑鼠茶壺移動
這個移動方法跟剛剛移動的茶壺是不一樣的,前面那種是在一開始顯示就在我們程式碼設定好的座標,而後面這種是我們用滑鼠按著圖片,就能移動到視窗上的任何座標。
以下是程式碼:(多加入的用紅色顯示)
float mouseX=0,mouseY=0;~~~宣告mouseX、mouseY,來當滑鼠的X、Y座標
static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
       glTranslatef(mouseX,mouseY,0);~~~移動~~~括號部分是按順序代表X軸、Y軸、Z軸~~~將原本的數字改成變數,這樣移動就能隨著滑鼠的座標移動而改變。
       glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
void motion(int x, int y)~~~設motion函式
{
    mouseX=(x-150)/150.0;~~~由平面X軸轉換成滑鼠X軸
    mouseY=-(y-150)/150.0;~~~由平面Y軸轉換成滑鼠Y軸
    glutPostRedisplay();~~~用來重新顯示(整理)motion的程式,讓滑鼠的點擊函式(motion)能順利執行顯示。
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display);
    glutMotionFunc(motion);~~~用來呼叫滑鼠點擊的函式
    glutMainLoop();
}
一開始程式執行的樣子,此時茶壺大小(0.0.0)
滑鼠按住移動,大小改變
這是改變茶壺的大小,把原本的dispaly函式,刪除glTranslatef,加入glScalef,而茶壺的大小一開始是沒有的,只要按著滑鼠在視窗內移動,茶壺的大小就會隨著座標跟著改變。
float mouseX=0,mouseY=0;
static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
       glScalef(mouseX,mouseY,0);~~~改變大小~~~括號部分是按順序代表X軸、Y軸、Z軸~~~茶壺改變的大小會隨著滑鼠的座標移動而改變。
       glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
void motion(int x, int y)
{
    mouseX=(x-150)/150.0;
    mouseY=-(y-150)/150.0;
    glutPostRedisplay();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("GLUT Shapes");
    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();
}

2017年3月28日 星期二

筆記week04 郭羽

1.Translate:

code:
#include <GL/glut.h>
float mouseX=0 , mouseY=0;
void display(){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glTranslatef(mouseX,mouseY,0);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
void motion(int x,int y)
{
    mouseX = (x-150)/150.0;
    mouseY = -(y-150)/150.0;
    glutPostRedisplay();
}
int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("guoyu");
    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();
}

2.Scale

code中加入glScalef(mouseX,mouseY,0);

郭羽 week04 笔记

1.架設glut專案(茶壺Teapot)
#include <GL/glut.h>
static void display(void)
{
    glutSolidTeapot(0.3);
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Guo Yu 05052535");
    glutDisplayFunc(display);
    glutMainLoop();
}
run:

2017年3月27日 星期一

Week 4 P.L 課堂筆記

One. 架設GLUT架構 (Teapot) (review)


Two. Mouse Control

     1. glutMouseFunc(mouse);

          (1) 滑鼠動作

void mouse(int botton, int state, int x, int y)
{
    printf("%d %d %d %d\n",botton,state,x,y);
}

          (2) 換顏色

void mouse(int botton, int state, int x, int y)
{
    printf("%d %d %d %d\n",botton,state,x,y);
    glColor3f(x /500.0, 1, y / 500.0);
    glutPostRedisplay();
}

     2. glutMotionFunc();  ///可移動換顏色
void motion(int x, int y)
{
    printf("%d %d\n",x,y);
    glColor3f(x /500.0, 1, y / 500.0);
    glutPostRedisplay();
}

Three. Shape

Using Sine & Cosine to draw a circle


void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glBegin(GL_POLYGON);
        for(float angle=0 ; angle < 3.141592 * 2 ; angle+=0.001){
            glVertex2f(cos(angle),sin(angle));
        }
    glEnd();

    glutSwapBuffers();
}


02163635-謝伃婕-week4

利用車子的模型

可以知道車子的旋轉,移動跟縮放


製作小精靈

先畫一個黃色的圓形


然後把嘴巴的部分

挖一個洞

然後讓嘴巴可以動


畫茶壺


然後將茶壺變扁的



2017年3月20日 星期一

week04 找飯店?TRIVAGO



week04
解壓縮檔案 並執行



移動茶壺的位置
製作小精靈
小精靈的嘴吧會動了!!!!


茶壺變形了!

Week04 20170320 芷萱的課堂筆記

作業一:

前往http://jsyeh.org/3dcg10
 1. data.zip按滑鼠右鍵另存新檔


 2. windows.zip按滑鼠右鍵另存新檔
  3. glut32.dll按滑鼠右鍵另存新檔














 4. 將windows.zip解壓縮到桌面→data.zip解壓縮到windows.zip資料夾
      →glut32.dll複製到windows.zip資料夾→將Transformation點兩下
      →利用Scale更改X,Y,Z質的改變
作業二:利用GLUT做出茶壺原程式碼       #include <GL/glut.h>
  void display()
   {
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
       glPushMatrix();
           glTranslatef(0.5,0,0);
           glutSolidTeapot(0.3);
       glPopMatrix();
       glutSwapBuffers();
   }
   int main(int argc,char**argv)
  {
       glutInit(&argc,argv);
       glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
       glutCreateWindow("04160391 Translate Rotate Scale");

       glutDisplayFunc(display);
       ///glutMouseFunc(mouse);
       glutMotionFunc(motion);
       glutMainLoop();
   }

先了解滑鼠座標系統

增加程式碼→讓滑鼠可以移動茶壺 移動Translate
程式碼
   #include <GL/glut.h>

   float mouseX=0,mouseY=0;
   void display()
   {
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
       glPushMatrix();
           glTranslatef(mouseX,mouseY,0);
           glutSolidTeapot(0.3);
       glPopMatrix();
       glutSwapBuffers();
   }
   void motion(int x,int y)
   {
       mouseX = (x-150)/150.0;
       mouseY = -(y-150)/150.0;
       glutPostRedisplay();
   }
   int main(int argc,char**argv)
  {
       glutInit(&argc,argv);
       glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
       glutCreateWindow("04160391 Translate Rotate Scale");

       glutDisplayFunc(display);
       ///glutMouseFunc(mouse);
       glutMotionFunc(motion);
       glutMainLoop();
   }

讓滑鼠可以縮放茶壺 縮放Scale
更改部分程式碼

glTranslatef(mouseX,mouseY,0);
改成glScalef(mouseX,mouseY,0);