顯示具有 40471122H_黃俊凱 標籤的文章。 顯示所有文章
顯示具有 40471122H_黃俊凱 標籤的文章。 顯示所有文章

2017年12月28日 星期四

俊凱的week14筆記

1.畫三角形
邊線上色
size(600,600,P3D);
background(255);
beginShape(TRIANGLE);
  stroke(255,0,0);vertex(300,100);//邊線上色
  stroke(255,255,0);vertex(500,500);//邊線上色
  stroke(0,0,255);vertex(100,500);//邊線上色
endShape();
圖案填滿
size(600,600,P3D);
background(255);
beginShape(TRIANGLE);
  fill(255,0,0);vertex(300,100);//顏色填滿
  fill(255,255,0);vertex(500,500);//顏色填滿
  fill(0,0,255);vertex(100,500);//顏色填滿
endShape();
重疊三角形
void setup()
{size(600,600,P3D);
}
void draw()
{
background(255);
beginShape(TRIANGLE);
beginShape(TRIANGLE);
fill(255,0,0);vertex(100,100,0);
fill(255,0,255);vertex(100,500,100);
fill(255,255,0);vertex(500,500,0);
endShape();

beginShape(TRIANGLE);
fill(0,255,0);vertex(500,100,0);
fill(0,255,255);vertex(500,500,100);
fill(255,255,0);vertex(100,500,0);
endShape();

}

俊凱的week13筆記

1.AR體驗
 cool
2.Processing 色彩
RGB色彩
size(255,255);
colorMode(RGB,255);
for(int x=0;x<255;x++)
{
    for(int y=0;y<255;y++)
    {
      stroke(x,y,255);
      point(x,y);
    }
}
HSB色彩
size(255,255);
colorMode(HSB,255);
for(int x=0;x<255;x++)
{
    for(int y=0;y<255;y++)
    {
      stroke(x,y,255);
      point(x,y);
    }
}
3.執行roach檔
多重貼圖

2017年12月7日 星期四

俊凱的week12筆記

一.
1.下載上課檔案區 myGL_Frustrum221_MultiView_2012_1221-20171130T060949Z-001.zip檔案
2.開啟glut專案複製程式碼
3.修改程式碼如下並執行
二.
1.開啟Processing
2.下載collada,picking Library
3.執行collada example(Viewer 2D)
三.
1.執行老師程式碼
2.此程式可捕捉影片畫面動作

2017年11月30日 星期四

俊凱的Week11筆記

1.GLUT 播放wav.檔
#include<mmsystem.h>
.....
int main(int argc, char *argv[])
{
    PlaySound("Femaleha.wav",NULL,SND_ASYNC);//檔名,位置,如何播
    .....
}
2.GLUT播放mp3.檔
加入CMP3_MCI.h
#include <stdio.h>
#include "CMP3_MCI.h" ///使用外掛,可在FB下載
CMP3_MCI mp3;/// int a; 宣告變數
int main(int argc, char *argv[])
{
    //PlaySound("Femaleha.wav",NULL,SND_ASYNC);
    mp3.Load ("KatawareDoki.mp3");  //讀入mp3檔
    mp3.Play ();  //播放mp3檔
    printf("現在在待輸入a\n");
    int a;

    scanf("%d", &a);///等待輸入時,程式還沒結束
    ......
}
3.Processing 開啟mp3.檔
下載minim library
import ddf.minim.*;
Minim minim;
AudioPlayer player;
void setup(){
  minim=new Minim(this);
  player=minim.loadFile("KatawareDoki.mp3");
  player.play();
}
void draw()
{
  

}
Ctrl+K注意是否有檔案鍵入!!!!

2017年11月22日 星期三

俊凱的Week10筆記

1.期末作品展示
2.製作Android App
(i).在Processing下載Android Mode
(ii).執行程式碼
void setup()
{
  fullScreen();
}

void draw()
{
  if(mousePressed)background(255,0,0);
  else background(0,255,0);

}
(iii)展示
*手機內會多一個應用程式
*銀幕產生綠色
*按下銀幕產生紅色
3.執行老師範例程式
void setup() {
size(500, 500);
}

float ballX=250, ballY=450, ballVX=1.3, ballVY=-10;
float ball2X=250, ball2Y=50;
void draw() {
if ( dist(ballX, ballY, ball2X, ball2Y)<100 ) {
float cx=(ballX+ball2X)/2, cy=(ballY+ball2Y)/2;
float nx=ballX-ball2X, ny=ballY-ball2Y;
line(ballX,ballY, ball2X,ball2Y);
PVector N=new PVector(nx, ny);
N.normalize();
PVector v0=new PVector(ballVX, ballVY);
float len= -N.dot(v0);
v0.add(N.mult(len*2));
line(cx,cy, cx+10*ballVX, cy+10*ballVY);
line(cx,cy, cx+20*v0.x, cy+20*v0.y);
ellipse(cx, cy, 10, 10);
stroke(0); 
line(ballX, ballY, ball2X, ball2Y);
stroke(255, 128, 0); 
line(cx, cy, cx+5*ballVX, cy+5*ballVY);
stroke(255, 128, 0); 
line(cx, cy, cx+5*v0.x, cy+5*v0.y);
stroke(255, 0, 0); 
line(cx, cy, cx+N.x, cy+N.y);
//return;
ballVX=v0.x; 
ballVY=v0.y;
}
background(255);
ballX+=ballVX; 
ballY+=ballVY;
if(ballX<50 || ballX>500-50) ballVX = -ballVX;
if(ballY<50 || ballY>500-50) ballVY = -ballVY;
ellipse(ballX, ballY, 100, 100);
ellipse(ball2X, ball2Y, 100, 100);
}
void mouseDragged(){
ball2X=mouseX; ball2Y=mouseY;
}



2017年11月16日 星期四

俊凱的Week 09筆記

1.用processing展示圖片
   PImage img=loadImage("dora.png");  //讀取圖片
   size(600,600); //600*600的框
   image(img,0,0,600,600); 從(0,0)呈現600*600的框
2.滑鼠位置顯示圖片
PImage img;
void setup(){
 size(1280,900);
 img=loadImage("dora.jpg");
}
void draw(){
image(img,mouseX,mouseY);
}
呈現疊影效果
3.製作簡易馬力歐
*地圖製作
int [][]map={{0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,0,1,1,2,2,1,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             {1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
PImage imgMario,imgBrick,imgBrick2;
void setup()
{
  size(800,760);
  imgMario=loadImage("mario.png");
  imgBrick=loadImage("brick.png");
  imgBrick2=loadImage("brick2.jpg");

}
*馬力歐位置
float marioX=200, marioY=100, marioVX=0, marioVY=0;
boolean marioOnFloor=false;
void draw()
{
  background(255);
  //for(int x=0;x<20;x++) image(imgBrick,x*50,500,50,50);
  for(int x=0;x<14;x++){
    for(int y=0;y<11;y++){
      if(map[y][x]==1) image(imgBrick,x*50,y*50,50,50);
      if(map[y][x]==2) image(imgBrick2,x*50,y*50,50,50);
    }
  }
  image(imgMario,marioX,marioY,100,100);
  marioY += marioVY;
  marioX += marioVX;
 marioVY += 0.98;
  if(marioY>=500-95)
  {
    marioY=500-95;
    marioVY=0;
    marioOnFloor=true;
  }

}
*鍵盤控制
void keyPressed()
{
  if(keyCode==UP && marioOnFloor) { marioVY=-15; marioOnFloor=false;}
  if(keyCode==RIGHT) marioVX=5;
  if(keyCode==LEFT) marioVX=-5;
}
void keyReleased()
{
  if(keyCode==RIGHT || keyCode==LEFT) marioVX=0;

}


2017年11月9日 星期四

俊凱的week08筆記

Topic1
1.至jsyeh.org/3dcg10下載data.zip windows.zip glut32到桌面
2.至Moodle下載 opencv2.1.0-win32-vs2008.exe
3.打開codeblocks 貝殼專案檔
4.輸入程式碼
5.此時無法執行!!
*右鍵點選左邊project,build options
*search directories->compiler->C:\openCV2.1\include
*search directories->linker->C:\openCV2.1\lib
*linker setting->cv21,cxcore210,highgui210
6.即可執行

Topic2:在glut開啟opencv圖檔
1.記號部分為新增之程式碼至glut專案檔中,並完成以上所有步驟
2.須將圖案放置freeglut的bin資料夾中

Topic3:地球轉動
1.下載老師程式碼

2017年11月2日 星期四

俊凱的Week07筆記

1.作業互評
2.Mouse-Light打光
步驟一:打開glut專案擋
步驟二:尋找main中之 glLightfv函式
步驟三:尋找相關函式的宣告變數
步驟四:將GLfloat light_position[]函式前的const去除,才可以進行修正
步驟五:新增motion函式,並在main加入glutMotionFunc(motion);函式
  void motion(int x, int y)
{
    light_position[0]=(x-150*2)/150.0*2;  //變更光源座標為滑鼠座標
    light_position[1]=-(y-150)/150.0*2; 
    glLightfv(GL_LIGHT0,GL_POSITION,light_position); //重設光源
    glutPostRedisplay(); 
}
步驟六:編譯執行,完成!!!!

           

2017年10月21日 星期六

俊凱的Week06筆記

1.開啟week05專案檔
2.新增打光功能
    glEnable(GL_LIGHTING);//打光
    glEnable(GL_DEPTH_TEST);//3D深度偵測
    glEnable(GL_LIGHT0);//打光
    glLightfv(GL_LIGHT0,GL_POSITION,pos);//設定打光位置
3.新增鍵盤控制,滑鼠控制,產生動畫
float rotateX=0,rotateY=0,rotateZ=0;
void keyboard(unsigned char key, int x, int y)
{
    printf("now: %c ( %d %d )\n", key, x, y);
    if(key=='x')rotateX++;//X軸旋轉
    if(key=='y')rotateY++;//Y軸旋轉
    if(key=='z')rotateZ++;//Z軸旋轉
    if(key=='e')rotateX=0,rotateY=0,rotateZ=0;
    glutPostRedisplay();
}
int oldX=0, oldY=0;
void mouse(int button, int state, int x, int y)
{
    printf("Button: %d  State: %d  ( %d %d )\n", button, state, x, y);
    if(state==GLUT_DOWN)//按下按鍵
    {
        oldX = x;
        oldY = y;
    }
}
void motion(int x, int y)//執行動畫
{
    rotateY += -(x-oldX);//Y方向轉動
    rotateX += -(y-oldY);//Y方向轉動
    oldX = x;//更新座標
    oldY = y;//更新座標
    glutPostRedisplay();
}

2017年10月18日 星期三

KAI的Week05筆記

1.至jsyeh.org/3dcg10/下載win32.data.glut32.dll檔案
2.解壓縮檔案並注意是否在同個目錄(data資料夾需放入windows資料夾)
3.執行Transformation.exe
4.執行Projection.exe
gluPerspective(fovy,  aspect,  zNear,  zFar)
*fovy:視野大小
*aspect:x,y之比例
*zNear:切面(Light)
*zfar:fu:切面(Shadow)
glLookAt:(0.00,0.00,2.00)->eye眼睛所看過去的方向
               (0.00,0.00,0.00)->center物體中心
               (0.00,0.00,0.00)->物體向上之角度
5.開老師的week05懶人包
*注意:須將data資料放入freeglut/bin中

2017年10月8日 星期日

俊凱的Week04筆記

1.開啟GLUT Project
2.修改範例專案
  glPushMatrix();
        glTranslated(0,-1,-6);//移動位置(x,y,z)
        glRotated(60,1,0,0);//旋轉(角度,x,y,z)
        glRotated(a,0,0,1);//不斷旋轉(變數,x,y,z)
        glScalef(1,1,1);//縮放(x,y,z)
        //glutSolidCone(1,1,slices,stacks);
        glColor3d(1,1,0);
        glutSolidTeapot(1.5);
        glColor3d(1,0,0);
    glPopMatrix();

2017年10月3日 星期二

俊凱的隨堂筆記-Week03

(一)學姊優良佳作
1.開新GLUT專案並複製學姊程式碼
2.將.txt檔移至bin資料夾中,才可進行讀檔
3.成果
*glPointSize作為防止圖形失真之函式
(二)3D Exploration
1.下載並安裝3D Exploration
2.利用老師所提供之模型
3.將.obj檔另存為.cpp檔並用sample app 模式
4.新建OpenGL專案檔
5.複製程式碼並執行//並將無法編譯之程式碼省略
6.成果

2017年9月23日 星期六

俊凱的Week02筆記

1.完成上週操作過程
2.複製部分程式碼(可用notepad++編輯)
#include <GL/glut.h>
void display()
{
 glClearColor(1,0,0,0); //清背景顏色 (R,G,B,A)                                            
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 glColor3f(1,1,1); //物件顏色(R,G,B)                       
 glutSolidTeapot(0.3); //製作茶壺 
 glutSwapBuffers(); //交換繪圖Buffers
}
int main(int argc, char *argv[]) //主程式函式,argc參數數量,argv用陣列存參數
{
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); //設定顯示模式
 glutCreateWindow("GLUT Shapes");//產生視窗
 glutDisplayFunc(display);//顯示圖像
 glutMainLoop(); //主要迴圈
 return  EXIT_SUCCESS;
}
3.三角形函式(漸層色)
void display()
{
 glClearColor(1,0,0,0); //清背景顏色 (R,G,B,A)                                            
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 glBegin(GL_POLYGON); //開始畫(多邊形)
 //在頂點前用函式glColor3f(R,G,B),設定顏色
 glColor3f(1,0,0); glVertex3f(1,1,0); 
 glColor3f(0,1,0); glVertex3f(-1,1,0);
 glColor3f(0,0,1); glVertex3f(0,-1,0);        
 glEnd(); //結束
 glutSwapBuffers(); //交換繪圖Buffers
}