顯示具有 04160293_簡琮霖 標籤的文章。 顯示所有文章
顯示具有 04160293_簡琮霖 標籤的文章。 顯示所有文章

2017年5月15日 星期一

圖學Note CCL week 13 <>

1.小考T-R-T
glPushMatrix();
   glTranslatef(0.4,0.5,0);
   glRotatef(angle,0,0,1)
   glTranslatef(+0.5,+0.3,0);
   drawArm();
glPopMatrix();

由下往上看
畫手 > 把旋轉軸移到中心 > 旋轉 > 把手放在哪裡
2.讀圖檔


3.設定貼圖
4.轉動的地球
#include <opencv/highgui.h> ///for cvLoadImage()
#include <opencv/cv.h> ///for cvCvtColor()
#include <GL/glut.h> ///3D glut
#include <stdio.h>
GLUquadric * quad;
GLuint id;
float angle=0;
void display()
{   glEnable(GL_DEPTH_TEST); ///要啟動 Detph Test 深度值的測試,3D顯示才正確
    glClear(GL_COLOR_BUFFER_BIT  | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();///自動轉很帥
        glRotatef(90, 1,0,0);
        glRotatef(angle, 0,0,1);///自動轉很帥
        gluQuadricTexture(quad, 1);
        gluSphere(quad, 1, 30, 30);///glutSolidTeapot(0.3);
    glPopMatrix();///自動轉很帥
    glFlush();
}
void timer(int t)
{   glutTimerFunc(20, timer, 0);/// 1000 msec   50fps:20msec
    angle+=1;///自動轉很帥
    glutPostRedisplay();
}
int myTexture(char *filename)
{
    IplImage * img = cvLoadImage(filename); ///OpenCV讀圖
    cvCvtColor(img,img, CV_BGR2RGB); ///OpenCV轉色彩 (需要cv.h)
    glEnable(GL_TEXTURE_2D); ///1. 開啟貼圖功能
    GLuint id; ///準備一個 unsigned int 整數, 叫 貼圖ID
    glGenTextures(1, &id); /// 產生Generate 貼圖ID
    glBindTexture(GL_TEXTURE_2D, id); ///綁定bind 貼圖ID
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖T, 就重覆貼圖
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); /// 貼圖參數, 超過包裝的範圖S, 就重覆貼圖
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); /// 貼圖參數, 放大時的內插, 用最近點
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); /// 貼圖參數, 縮小時的內插, 用最近點
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, img->width, img->height, 0, GL_RGB, GL_UNSIGNED_BYTE, img->imageData);
    return id;
}

void myInit()
{   quad = gluNewQuadric();
    id = myTexture("image.jpg");
}
int main(int argc, char**argv)
{   glutInit(&argc, argv);
    glutCreateWindow("3D");
    glutDisplayFunc(display); ///顯示
    glutTimerFunc(0, timer, 0);
    myInit(); ///我的 init 初始化 把貼圖準備好 前面OpenCV 2行, 後面 OpenGL 9行
    glutMainLoop();

}

5.回家作業機器人

2017年4月24日 星期一

圖學Note CCL week 10 GLUT <射擊 音樂>



NeHe Lesson 32 射擊小遊戲





開新專案 GLUT

INCLUDE多媒體標題檔
#include <mmsystem.h> 

滑鼠函式
void mouse(int button, int state , int x , int y)
{
    PlaySound("C:\\Users\\user\\Desktop\\Lesson32\\Data\\shot.wav",NULL,SND_ASYNC);

}
在main中加入
glutMouseFunc(mouse);

========================================================================

鍵盤函式
void keyboard(unsigned char key,int x,int y)
{
 if(key=='1')PlaySound("C:\\Users\\user\\Desktop\\Lesson32\\Data\\shot.wav",NULL,SND_ASYNC)
}
在main中加入
glutKeyboardFunc(keyboard);

========================================================================

搜尋 CMP3_MCI


#include "CMP3_MCI.h"
CMP3_MCI myMP3;   宣告變數

在main中加入
myMP3.Load("C:\\Users\\user\\Downloads\\MC.mp3");   ( )中輸入檔案位置
myMP3.Play();

2017年3月27日 星期一

圖學Note CCL week 06 GLUT <期中考題 階層轉動 實作T-R-T>

大小寫要正確
glPushMatrix():///備份矩陣  10% (stack push)
   glRotatef( angle, x, y, z); //旋轉30%
   glTranslate( x, y, z); //移動40%
   glScalef( x, y, z);/縮放 50%

   glBegin(GL_POLYGON);//開始畫  60%
      glNormal3f( nx, ny, nz);//打光的法向量 90%
      glTexCoord2f( tx, ty);//貼圖的座標 100%
      glColor3f( r, g, b);//顏色70%
      glVertex3f( x, y, z);//頂點80%
   glEnd();//結束畫
glPopMatrix();還原矩陣 20% (stack pop)

階層轉動

圖左  先轉動後移動<自轉>                               圖右  先移動後轉動<公轉>
小技巧:讀程式順序 橘>紅>藍>紫


2017年3月20日 星期一

圖學Note CCL week 05 GLUT< Translate scale>


本日重點整理:

Translate移動函式
glTranslatef(mouseX,mouseY,0);
scale縮放函式
glScalef(mouseX,mouseY,0);
滑鼠移動事件函數
void motion(int x,int y)
{
    printf("%d %d\n",x,y);
    mouseX=(x-150)/150.0;
    mouseY=-(y-150)/150.0;
    glutPostRedisplay();
}

2017年3月13日 星期一

圖學Note CCL week 04 GLUT(畫圓形、滑鼠事件改變顏色)


#include <GL/glut.h>
#include <stdio.h>
#include <math.h>
void mouse(int button, int state, int x, int y)///滑鼠函式///
{
    printf("%d %d %d %d\n",button,state,x,y);
    glColor3f(1,x/300.0,y/300.0);
    glutPostRedisplay();
}
void motion(int x,int y)///滑鼠移動函式
{
    printf("%d %d\n",x,y);
    glClearColor(1,y/300.0,x/300.0,0.0);
    glutPostRedisplay();
}
///使用高級的GLUT使用工具者
static void display(void)///用來顯示
{
    //glClearColor(1.0, 1.0, 0.0,0.0);///背景顏色
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);///畫背景
    glBegin(GL_POLYGON);

        for(float angle=0;angle<3.14159*2;angle+=0.001)
        {
            glVertex2f(cos(angle),sin(angle));
        }
    glEnd();
    glutSwapBuffers();///最後要顯示,有始有終
}
int main(int argc, char *argv[])///主函式
{
    glutInit(&argc, argv);///GLUT初始化
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    ///要開始顯示DISPLAY的模式
    glutCreateWindow("HI YAYAYA");                                                開一個視窗
    glutDisplayFunc(display);///                                                             DISPLAY函式
    glutMouseFunc(mouse);                                                                   滑鼠函式
    glutMotionFunc(motion);                                                                 滑鼠移動函式
    glutMainLoop();

}

2017年3月6日 星期一

圖學Note CCL week 03 GLUT< 初體驗 >

GLUT專案:

#include <GL/glut.h>
///使用高級的GLUT使用工具者
static void display(void)///用來顯示
{
    glClearColor(1.0, 1.0, 0.0,0.0);///背景顏色
    glClear(GL_COLOR_BUFFER_BIT);///畫背景
    glColor3f(165/255.0, 60/255.0, 30/255.0);
    glutSolidTeapot(0.5);///茶壺
    glutSwapBuffers();///最後要顯示,有始有終
}

int main(int argc, char *argv[])///主函式
{
    glutInit(&argc, argv);///GLUT初始化
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    ///要開始顯示DISPLAY的模式
    glutCreateWindow("HI YAYAYA");///開一個視窗

    glutDisplayFunc(display);///DISPLAY函式


    glutMainLoop();

}
如下圖<完成>

用GLUT畫三角形

#include <GL/glut.h>
///使用高級的GLUT使用工具者
static void display(void)///用來顯示
{
    glBegin(GL_TRIANGLES);///開始畫三角形
    glColor3f(1,0,0);
    glVertex2f(0,0);
    glColor3f(0,1,0);
    glVertex2f(-1,-1);
    glColor3f(0,0,1);
    glVertex2f(1,-1);
    glEnd();///結束畫三角形
    glutSwapBuffers();///最後要顯示,有始有終
}

int main(int argc, char *argv[])///主函式
{
    glutInit(&argc, argv);///GLUT初始化
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    ///要開始顯示DISPLAY的模式
    glutCreateWindow("HI YAYAYA");///開一個視窗

    glutDisplayFunc(display);///DISPLAY函式


    glutMainLoop();

}
如下圖<完成>

2017年2月20日 星期一

圖學Note CCL week 01

1.測試電腦


2.開啟GL project 
步驟:  code Blocks > file > new > project > open GL project



反白處填上學號
<完成後>



3.Week01_hw3_openGLUT 

1.步驟   code Blocks > file > new > project > GLUT

2.下載

freeglut 3.0.0 MinGW Package


3.安裝步驟
<<先解壓縮檔案>>

在下片紅色圈圈處輸入      學號_HW3_GLUT


將檔案位置放入

<完成後>