(1)專題進度: Q&A
(2)主題: Antialias
Antialias:
反鋸齒、柔邊
2018年1月18日 星期四
James的圖學筆記Week14
光柵化
Part1.繪製三角形
mode1.描邊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();

mode2.填滿
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();

mode3.重疊
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();
}

James的圖學筆記Week13
Part1.AR
Part2.Processing 色彩模式
1.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);
}
}
colorMode(RGB,255);
for(int x=0;x<255;x++)
{
for(int y=0;y<255;y++)
{
stroke(x,y,255);
point(x,y);
}
}
2.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);
}
}
colorMode(HSB,255);
for(int x=0;x<255;x++)
{
for(int y=0;y<255;y++)
{
stroke(x,y,255);
point(x,y);
}
}
part3.多重貼圖
下載roach.zip
2018年1月17日 星期三
2018年1月16日 星期二
Week11
在GLUT專案加入音樂
程式碼如下:
#include <GL/glut.h>
#include<mmsystem.h>
#include<stdio.h>
int main()
{
PlaySoundA("test.wav",NULL,SND_ASYNC);
return 0;
}
//SND_SYNC 同步播放,播完音樂函式才會return(此為預設值)
//SND_ASYNC 非同步撥放,一開始撥放就return
程式碼如下:
#include <GL/glut.h>
#include<mmsystem.h>
#include<stdio.h>
int main()
{
PlaySoundA("test.wav",NULL,SND_ASYNC);
return 0;
}
//SND_SYNC 同步播放,播完音樂函式才會return(此為預設值)
//SND_ASYNC 非同步撥放,一開始撥放就return
Week9
1
下載processing
3
2
貼上Bump
maping 的程式碼產生以下結果
3
下載一張圖片拉入編譯器並用程式顯示圖片,如下圖
5
貼上馬力歐小遊戲的程式碼,用以上方式設定馬力歐、磚塊、問號磚塊的圖片會產生簡單的馬力歐小遊戲,可以用鍵盤左右和上鍵控制馬力歐移動和跳躍
Week8
1
下載openCV2.1
2
新建貝殼專案
3
設定OpenCV相關資料路徑
A
對專案點擊右鍵
B
選擇Build
options
C
*search directories->compiler-> ……..\openCV2.1\include
*search
directories->linker-> ……..\openCV2.1\lib
*linker
setting->cv21,cxcore210,highgui210
4
下載圖片道專案目錄底下
5
輸入範例程式碼並執行可以開啟圖片
6
新建Glut專案
7
同樣方式再次設定路經
8
把圖檔放到freeglut/bin
底下
9
複製老師程式碼全部選取代貼上並執行,便可以看到自轉的地球了
李嘉恩的期末作品week18
期末作品展示
1.影片連結:
https://youtu.be/IGDcn3Aojt0
2.開發工具:processing
3.操作方式:
按左右鍵控制角色移動,跳到藍台階會有跳躍音效,跳到針刺會有扣血音效並扣三滴血,
被頂端針刺刺到或者是墜落谷底會有死亡音效並停止遊戲
1.影片連結:
https://youtu.be/IGDcn3Aojt0
2.開發工具:processing
3.操作方式:
按左右鍵控制角色移動,跳到藍台階會有跳躍音效,跳到針刺會有扣血音效並扣三滴血,
被頂端針刺刺到或者是墜落谷底會有死亡音效並停止遊戲
2018年1月15日 星期一
Claire 的課堂作業 week15
計算機圖學 Computer Graphics
- 主題:Anti alias
- 期末作品 Q & A
Anti-aliasing
Aliasing 因為格子取樣的關係,導致電腦繪圖出來不是很正確(因為只有黑白)
Anti-aliasing 平滑化:用灰階的值讓人的視覺自懂補償出平滑的線或邊緣
Dithering 抖動:原本只有黑或白點,為了讓網點做出現層灰階的效果,把黑色點作左右移動,製造出效果
Claire 的課堂作業 week17
計算機圖學 Computer Graphics
- 主題:期末作品 Q & A
2D Tetris 進度:
從上禮拜獲得老師的Q&A到今天已經大致上完成了整個俄羅斯方塊的操作,
剩下要完成的項目有...
- 顯示關卡、分數
- 貼圖
- 配樂
課堂上在找OpenCV怎麼安裝到Xcode上
大部分找到的資料都是類似這樣:Link
但似乎是改版了,現在直接下載下來只能看到opencv2.framework
但加入外部Library又不給用 ...
進度:暫時用terminal顯示分數
Claire 的課堂作業 week18
期末作品展示
開發工具:使用OpenGL / C++ / Xcode
( 遠本有準備了可愛的磚塊貼圖,但遇到OpenCV for Xcode裝不好的問題,只好放圖讓大家看看.. )
操作方式:
- 遊戲開啟後便即刻開始
- 方向鍵:左、下、右 可移動方塊
- 方向鍵:上 可旋轉方塊
- 空白鍵:可讓方塊快速掉落到下方
- R:重新開始
- E:結束遊戲
視窗分別有兩個,白色為遊戲主場,黑色可看到分數及等級。
遊戲過程中,方塊會隨著時間加快。消除一列可獲得10分。
音樂會自動重複播放
備註
遊戲背景音樂來自 Kevin
MacLeod ~ Happy Boy End Theme - YouTube
2018年1月14日 星期日
計圖筆記WEEK16
專題進度:
做出一大一小球會一分為二
float r1=200, r2=0;
float totalArea=r1*r1;
boolean touched=false;
int animT=0;
void setup(){
size(800,600);
}
void draw(){
background(255);
if(touched) fill(255,255,0);
else fill(255);
ellipse(300,300, r1,r1);
ellipse( 600,300, r2, r2);
if(touched && animT>0){
//same total area
float diff=(totalArea/3) / 60 * (60-animT);
r2=sqrt(diff);
r1=sqrt(totalArea-diff);
animT--;
}
}
void mousePressed(){
if( dist( mouseX, mouseY, 300,300 ) < r1/2 ){
touched=true;
animT=60;
}
}
做出一大一小球會一分為二
float r1=200, r2=0;
float totalArea=r1*r1;
boolean touched=false;
int animT=0;
void setup(){
size(800,600);
}
void draw(){
background(255);
if(touched) fill(255,255,0);
else fill(255);
ellipse(300,300, r1,r1);
ellipse( 600,300, r2, r2);
if(touched && animT>0){
//same total area
float diff=(totalArea/3) / 60 * (60-animT);
r2=sqrt(diff);
r1=sqrt(totalArea-diff);
animT--;
}
}
void mousePressed(){
if( dist( mouseX, mouseY, 300,300 ) < r1/2 ){
touched=true;
animT=60;
}
}

訂閱:
文章 (Atom)