切割:
(雖然好像看不出來有切過,不過真的有切喔!)
打亂:
拼回原圖:
a. 描述撰寫過程曾經遭遇的困難
[C++ Error] Unit1.cpp(26): E2288 Pointer to structure required on left side of -> or ->*
一開始原圖我name設成 Image,
沒想到一直跑出上列訊息,但是有看沒有懂...
自己試了一陣子,但還是找不到原因.
只好請教同學.
seles幫忙我找到原因了~,很感謝他.
如果我一直沒問人的話,八成會找不到...
最後發現Image是關鍵字 ,然後又把name改成Imagezero,它就能run了~
其實還有一些問題,但先提到這為止...
b. 心得
我覺得把它寫成拼圖,感覺就難很多...
我這次寫得並不完全,還有一些問題還不是很懂.
之後還要再修改程式.
=================================================
week7的問題:
三角片,視角體積,2D算圖,(賽璐璐)?
By 課本 [P.5-16]
三角片是啥?
視角體積又是?
圖5-7 那個圖的用意是?
我想應該跟3D模型的塗色有關吧!
另外,還有一個問題
2D算圖怎麼算?
前一陣子,看了部動畫.
它是以2D方式呈現的3D動畫.
一般看到的3D動畫,一看就知道它是3D的(立體感十足).
以我的感覺來看,2D和3D最大的差別就是,
2D會有明顯的邊線.3D則無.
可是我看的那部卻有.
我覺得很神奇~ (好像就是樓下二樓那位說的賽璐璐風)
賽璐璐→輪廓有邊線,平塗的色塊
3D賽璐璐貼圖,是故意讓3D模型演算出的結果呈現出手繪的質樸感,它仍是3D模型喔,但依(電腦裡的)攝影機鏡頭角度所拍攝的畫面,去演算成仿傳統手繪的效果.[by yahoo知識+]
我老哥說那是算出來的....
可是我有點無法想像....
(希望課堂討論)
2007年10月31日 星期三
WEEK6
這次是簡單製作3乘3的隨機圖形排列
我所使用的圖形有三種
方法是利用一個3X3的二維陣列
用RANDOM的方式填入0~2的數值
srand(time(NULL));
for(i = 0 ; i < j =" 0" href="http: tw=" s3360256="" jpg=""> 利用這個物件我可以比較輕鬆的利用陣列的內容把ImageList編號過的圖片給一次大批輸出
不需要一個個的去指定Image物件所要讀取的圖片內容
ImageList1->Draw(Image00->Canvas,0,0,map[0][0],true);
ImageList1->Draw(Image01->Canvas,0,0,map[0][1],true);
.
.
.
(類推)
然後是設定一下圖片的屬性
我希望把圖片的白色背景去除
所以將去背這個選項給開啟(Transparent==true)
最後利用一個按鈕
希望按下去的時候圖形會重新洗牌
這時我發現新的圖形會和舊的圖形疊在一起繪製
我使用的解決法是在重新繪製之前
先把每張圖讀入一張全白的圖
接著再用上面的方法繪製
最後使用
Image00->Repaint();
Image01->Repaint();
Image02->Repaint();
.
.
.
重新描繪圖
不過缺點是連續重新洗牌的時候
圖片更新速度不是很快
另外就是要思考關於兩張圖交換的事件要怎麼去設定
交換的時候基本上像BUBBLE SORT的交換陣列內容寫法再把圖片重新描繪出來就可以了
但是甚麼時候要交換的條件可以成立就比較麻煩一點了
這個部分完成後還要去思考超過三個在一排時候的消去方式
至於時間可以利用Timer這個物件去做設定
要寫這個遊戲比較難的地方可能就是點選兩個圖的時候可以交換的成立事件吧
目前的想法是利用一個flag當作紀錄
再用一些判斷式做前置判斷
這些地方還要再做一些思考
接著是8-Puzzle的切割部分
基本上就是照著老師的作法去實作的
可能不同的地方是用計算的方式
我是利用把原圖除3的方式把圖給割出來
不是手動去分配的
只是出現的結果似乎顏色有點跑掉
不知道是不是圖片大小的緣故?
我所使用的圖形有三種
方法是利用一個3X3的二維陣列
用RANDOM的方式填入0~2的數值
srand(time(NULL));
for(i = 0 ; i < j =" 0" href="http: tw=" s3360256="" jpg=""> 利用這個物件我可以比較輕鬆的利用陣列的內容把ImageList編號過的圖片給一次大批輸出
不需要一個個的去指定Image物件所要讀取的圖片內容
ImageList1->Draw(Image00->Canvas,0,0,map[0][0],true);
ImageList1->Draw(Image01->Canvas,0,0,map[0][1],true);
.
.
.
(類推)
然後是設定一下圖片的屬性
我希望把圖片的白色背景去除
所以將去背這個選項給開啟(Transparent==true)
最後利用一個按鈕
希望按下去的時候圖形會重新洗牌
這時我發現新的圖形會和舊的圖形疊在一起繪製
我使用的解決法是在重新繪製之前
先把每張圖讀入一張全白的圖
接著再用上面的方法繪製
最後使用
Image00->Repaint();
Image01->Repaint();
Image02->Repaint();
.
.
.
重新描繪圖
不過缺點是連續重新洗牌的時候
圖片更新速度不是很快
另外就是要思考關於兩張圖交換的事件要怎麼去設定
交換的時候基本上像BUBBLE SORT的交換陣列內容寫法再把圖片重新描繪出來就可以了
但是甚麼時候要交換的條件可以成立就比較麻煩一點了
這個部分完成後還要去思考超過三個在一排時候的消去方式
至於時間可以利用Timer這個物件去做設定
要寫這個遊戲比較難的地方可能就是點選兩個圖的時候可以交換的成立事件吧
目前的想法是利用一個flag當作紀錄
再用一些判斷式做前置判斷
這些地方還要再做一些思考
接著是8-Puzzle的切割部分
基本上就是照著老師的作法去實作的
可能不同的地方是用計算的方式
我是利用把原圖除3的方式把圖給割出來
不是手動去分配的
只是出現的結果似乎顏色有點跑掉
不知道是不是圖片大小的緣故?
再這邊碰到一個麻煩的地方就是假如我不是一個正方形的圖去做的話
除三的結果去割會變的很奇怪
這部份可能我再想看看吧
==================================================================================================
在本章的問題方面
對VRML這個虛擬實際技術比較有興趣
我記得這是可以使用在網頁的插件去實行3D場景的一個技術
那麼在裡面的儲存方式和描繪方式和OpenGL之類的3D軟體有甚麼樣的不同呢?
另外就是關於3D動畫方面
我知道有一種流行的3D風格
介於2D和3D之間的賽璐璐風格式3D
它在傳統3D那種描繪方式有甚麼不同呢?
感覺是比較平面的3D
還是他是利用2D貼圖的偽3D呢?
除三的結果去割會變的很奇怪
這部份可能我再想看看吧
==================================================================================================
在本章的問題方面
對VRML這個虛擬實際技術比較有興趣
我記得這是可以使用在網頁的插件去實行3D場景的一個技術
那麼在裡面的儲存方式和描繪方式和OpenGL之類的3D軟體有甚麼樣的不同呢?
另外就是關於3D動畫方面
我知道有一種流行的3D風格
介於2D和3D之間的賽璐璐風格式3D
它在傳統3D那種描繪方式有甚麼不同呢?
感覺是比較平面的3D
還是他是利用2D貼圖的偽3D呢?
WEEK6作業&讀後感
寫的東西嘛...
想到用FOR迴圈寫
但是卻不知道怎麼寫出來:
然後看到Zadd同學的文章後:
想到用FOR迴圈寫
但是卻不知道怎麼寫出來:
然後看到Zadd同學的文章後:
+上網查了點資料後寫出來的東西:
左中&左下的圖似乎沒辦法正常顯示出來
在度修改後寫出來的東西:
這次更恐怖了...
到底怎麼回事.....
最後放棄了....再度回到土法煉鋼的方法...
總算能夠把圖正常的分割了
不過呢...
執行的時候卻異常的慢
可能是因為FOR迴圈裡面算的東西太多了
參考的網站:
===========================
誰可以告訴我錯在哪裡嗎?
===========================
課本上說
可以用接圖的技術把好幾張圖連結在一起
可是不會造成
就景色的邊緣會往內縮
單一的話看起來不會很怪
可是好幾張連續景色連在一起的話,不會出現景色邊緣會大小不一樣的問題嗎?
據我所知
一般拍照都是以拍照者為中心
開始慢慢旋轉(拍照)
所以不會發生這些問題嗎?
為什麼3D立體眼睛會讓使用者看到的畫面變成3D的?
為什麼過濾之後,視覺上就會變的立體?
以上...~
2007年10月28日 星期日
2007年10月27日 星期六
CopyRect
老話一句,教授給出程式碼之後一切就都變得很簡單
但是在此之前卻會查資料查的半死,然後又沒甚麼收穫
最吐血的是家裡的vista不能看程式附的help檔,真是~!#$%^&*(_+
發個牢騷 = =a
【這堂課新學的指令】
Rect是一個特殊的數據結構,又是一個函數
他的作用就是定義一個矩形位址
Rect( 左上角x , 左上角y , 右下角x , 右下角y );
CopyRect 則是將一個Canvas(A)的矩形位址,'
複製到另一個Canvas(B)的矩形位址
CopyRect( B的矩形位址 , A的Canvas , A的矩形位址 );
【讓Image在程式一打開就有圖片】
點選一個Image,在屬性視窗裡,尋找 Picture ( Name 的下面第二個)
點進去後可以載入bmp 圖檔
只能載入 bmp 圖檔,雖然其他如 jpg 的圖也可以開啟,
但是會在CopyRect時發生錯誤
【其他1】 【 動態使用指定 Image 】
如果要像教授播放的範例一樣,弄出九宮格
那至少會有10個 Image ,一個來源圖片,九個空 Image
這樣的話,就要每個 Image 都設定一次
ex:
Image1:
int x=280,y=68;
TRect rtTile,rtOI;
rtTile = Rect(0,0,90,90);
rtOI = Rect(x,y,x+90,y+90);
Image1->Canvas->CopyRect(rtTile,Image1->Canvas,rtOI);
Image2:
int x=280,y=68;
TRect rtTile,rtOI;
rtTile = Rect(0,0,90,90);
rtOI = Rect(x,y,x+90,y+90);
Image2->Canvas->CopyRect(rtTile,Image1->Canvas,rtOI);
Image3:
...
...
...
...
9個 Image 就要設定9次,數量一多不就寫到死了
所以我就想,難道 Image 只能固定使用,不能用其他的變數替代嗎??
或是用陣列來設定 Image ??
然後開始上網翻資料
我找到的是使用 FindComponent 函數
使用方法如下:
(TImage*)FindComponent( "Image"+IntToStr( i ) )
(Timage*) 這個應該是元件type的宣告
( "Image"+IntToStr( i ) ) 這裡是 "元件名稱"+(編號)
((TImage*)FindComponent("Image"+IntToStr(1)))->Canvas
相等於 Image1->Canvas
這樣的話,要使用哪個 Image 就隨自己了
九個 Image 就可以只要更改 rtOI 的 x,y 坐標
int x=0,y=0;
TRect rtTile,rtOI;
rtTile = Rect(0,0,88,88);
rtOI = Rect(x,y,x+88,y+88);
for(int i=0;i<8;i+=3)
{
for(int j=i+1;j<i+4;j++)<>
{
((TImage*)FindComponent("Image"+IntToStr(j)))->Canvas->
CopyRect(rtTile,Image10->Canvas,rtOI);
x+=88;
rtOI = Rect(x,y,x+88,y+88);
}
x=0;
y+=88;
rtOI = Rect(x,y,x+92,y+92);
}
最後我發現!!
比起去想 for loop 裡面怎麼改 x,y 的座標
比起去想 for loop 裡面怎麼改 x,y 的座標
還不如複製貼上用個9次來的快 ...... XD
【其他2】 【 指定 Image 為陣列 】
懂了 FindComponent 怎麼用之後,就有更簡單的方法啦
先找個地方宣告 global 變數
Timage *BMP[9];
然後把下列程式碼放在 butten 裡面或隨便哪裡 看你想怎麼使用
for(int i=0;i<9;i++)
BMP[i]=(TImage*)FindComponent("Image"+IntToStr(i+1));
這樣一來,
Image1->Canvas 就可以替換成 BMP[0]->Canvas
Image2->Canvas 則可以替換成 BMP[1]->Canvas
...
...
依此類推
這樣上面po的程式碼又可以更簡潔易看了
int x=0,y=0;
TRect rtTile,rtOI;
rtTile = Rect(0,0,88,88);
rtOI = Rect(x,y,x+88,y+88);
int k=0;
for(int i=0;i<8;i+=3)
{
for(int j=i+1;j<i+4;j++)
{
BMP[k++]->Canvas->CopyRect(rtTile,Image10->Canvas,rtOI);
x+=88;
rtOI = Rect(x,y,x+88,y+88);
}
x=0;
y+=88;
{
BMP[k++]->Canvas->CopyRect(rtTile,Image10->Canvas,rtOI);
x+=88;
rtOI = Rect(x,y,x+88,y+88);
}
x=0;
y+=88;
rtOI = Rect(x,y,x+92,y+92);
}
}
問題:
暫無
2007年10月25日 星期四
九宮格圖 + YCrCb色彩模型的問題
複製圖片部份區塊到別處
執行:
a. 描述撰寫過程曾經遭遇的困難
我從我以前畫的圖,
挑了張正方形的圖,(但是正方形的居然只有兩張...)
所以我選了較小的一張.(另一張是這張的一倍大)
但是對這個視窗來說,
還是很大....
說到遭遇到的困難,
就是一開始在測試,
ex:
rtTile=Rect(0,0,57,57);
rtOI=Rect(x,y,x+57,y+57);
每個座標的功用的時候吧!
各別代入差異性大的數值,
慢慢代..慢慢代..
試了好久....
總算比較了解它們的功用.
b. 心得
除了上面敘述的部份比較麻煩之外,
其實我寫得還算順利.
不過原本沒打算讓格子那麼大的...
只是一把比例縮小,
圖片就會看到很明顯的格子點.
就像這樣. (點一下圖,才看得清楚格子點.)
整個看起來就很糟.
所以就作罷了.
=================================================
week6的問題:
YCC色彩模型?
by[P.4-8]
我想知道YCrCb是什麼?
Y?
Cr?
Cb?
各是指什麼意思??
是像色相環的東西嗎??(還是別的?)
課本上也只寫"YCrCb較為符合人類感官知覺"
又是怎樣符合??
怎樣又叫作不符合??
我實在無法想像....
----------------------------(題外話)----------------------------
雖然不知道我的問題問得好不好,
不過我也真的很想知道.
就是因為不知道才想把它搞懂.
而且我不太會描述我的問題,
這樣大家也很難回答吧!...
不過還是請知道一些的人,給我點意見吧!
感謝各位~^^~
執行:
a. 描述撰寫過程曾經遭遇的困難
我從我以前畫的圖,
挑了張正方形的圖,(但是正方形的居然只有兩張...)
所以我選了較小的一張.(另一張是這張的一倍大)
但是對這個視窗來說,
還是很大....
說到遭遇到的困難,
就是一開始在測試,
ex:
rtTile=Rect(0,0,57,57);
rtOI=Rect(x,y,x+57,y+57);
每個座標的功用的時候吧!
各別代入差異性大的數值,
慢慢代..慢慢代..
試了好久....
總算比較了解它們的功用.
b. 心得
除了上面敘述的部份比較麻煩之外,
其實我寫得還算順利.
不過原本沒打算讓格子那麼大的...
只是一把比例縮小,
圖片就會看到很明顯的格子點.
就像這樣. (點一下圖,才看得清楚格子點.)
整個看起來就很糟.
所以就作罷了.
=================================================
week6的問題:
YCC色彩模型?
by[P.4-8]
我想知道YCrCb是什麼?
Y?
Cr?
Cb?
各是指什麼意思??
是像色相環的東西嗎??(還是別的?)
課本上也只寫"YCrCb較為符合人類感官知覺"
又是怎樣符合??
怎樣又叫作不符合??
我實在無法想像....
----------------------------(題外話)----------------------------
雖然不知道我的問題問得好不好,
不過我也真的很想知道.
就是因為不知道才想把它搞懂.
而且我不太會描述我的問題,
這樣大家也很難回答吧!...
不過還是請知道一些的人,給我點意見吧!
感謝各位~^^~
95360290完成圖修正
心得:這次作業比之前的困難很多,剛開始在做的時候,點執行一直跑出錯誤視窗,原以為是程式有打錯,一直問別人,還是寫不出來還蠻氣餒的...後來才知道原來是電腦出了問題,不是程式碼打錯。下課後繼續留在教室換了台電腦把作業寫出來,好在有很厲害的同學還留在教室,在靠著上課抄的筆記,利用了1節課的時間,把上課交的東西都再寫了一便,雖然有一個圖弄錯了,不過最後還是修正好了。
在寫程式的時候,一直卡再回圈那,不知道i跟j到底代表什麼意思,問了同學之後才知道那是座標的意思,還蠻開心的,感謝同學&老師的幫忙!
Question.視訊的原理是將畫面以攝影機的方式儲存到電腦內,在以每秒中播放30張影像來取得連續的效果。如果我對著鏡頭做一個很大的動作,電腦如何將我著個動作分配給在時間內的每張影像。
在寫程式的時候,一直卡再回圈那,不知道i跟j到底代表什麼意思,問了同學之後才知道那是座標的意思,還蠻開心的,感謝同學&老師的幫忙!
Question.視訊的原理是將畫面以攝影機的方式儲存到電腦內,在以每秒中播放30張影像來取得連續的效果。如果我對著鏡頭做一個很大的動作,電腦如何將我著個動作分配給在時間內的每張影像。
混色作業
Week 6 HW 混色
心得:由於剛開始學習BCB,許多的按鈕與以往的視窗程式軟體不同,
同樣的,再撰寫時,Method也不同,但還好有其他同學的幫忙,瞭解
這個程式的原理,以及我應該如何去取得畫布顏色,又應該是要做or還
是and,另外較麻煩的是調顏色位置的地方。
-壓縮的必要性?
以七百多萬畫素的數位相機所拍下的一張 3072 × 2304 的照片來說,每個畫素由紅、綠、藍 3 個顏 色組成,每個顏色各以 8 個位元的 0 與 1 來記錄 0 到 255 這 256 個可能的數值。因此這張照片的原始大小就有二千多萬個位元組,也就是一億多個位元(1個位元組等於 8 個位元)。
簡單說,就是達到節省空間的目的。
-壓縮概念 ?
‧利用重複性去精簡資料,找到一個簡潔的資料表示法
‧轉換編碼
「長話短說」、「言簡意賅」就是類似的資料壓縮概念。
-壓縮原理?
目前查到有霍夫曼編碼,同樣的也是轉換編碼的概念。
霍夫曼編碼:http://tw.knowledge.yahoo.com/question/?qid=1405111915229
特點:霍夫曼編碼法的特點在於所編碼出來的檔案具有唯一碼性質的即時碼。也就是各個相異字元所編碼出所位元串並不相同,解碼時能立即解出,普遍應用在一般商業壓縮軟體、傳真機及無失真之靜態影像上。
-影像與一般檔案的壓縮比?
為何影像經壓縮軟體(winrar)的檔案大小幾乎與原來無所差別,或者是壓縮比不大?又文件壓縮比較大?
由於影像之格式大多已經過壓縮,如jpg,mp3等影音檔案本身皆已經過壓縮,所以壓縮軟體僅能夠壓縮些許;而文件因檔案特性,重複性較高,所以可做壓縮精簡的動作。
部分來源:http://www.nsc.gov.tw/_newfiles/popular_science.asp?add_year=2007&popsc_aid=55&page=2
By Melvin
心得:由於剛開始學習BCB,許多的按鈕與以往的視窗程式軟體不同,
同樣的,再撰寫時,Method也不同,但還好有其他同學的幫忙,瞭解
這個程式的原理,以及我應該如何去取得畫布顏色,又應該是要做or還
是and,另外較麻煩的是調顏色位置的地方。
-壓縮的必要性?
以七百多萬畫素的數位相機所拍下的一張 3072 × 2304 的照片來說,每個畫素由紅、綠、藍 3 個顏 色組成,每個顏色各以 8 個位元的 0 與 1 來記錄 0 到 255 這 256 個可能的數值。因此這張照片的原始大小就有二千多萬個位元組,也就是一億多個位元(1個位元組等於 8 個位元)。
簡單說,就是達到節省空間的目的。
-壓縮概念 ?
‧利用重複性去精簡資料,找到一個簡潔的資料表示法
‧轉換編碼
「長話短說」、「言簡意賅」就是類似的資料壓縮概念。
-壓縮原理?
目前查到有霍夫曼編碼,同樣的也是轉換編碼的概念。
霍夫曼編碼:http://tw.knowledge.yahoo.com/question/?qid=1405111915229
特點:霍夫曼編碼法的特點在於所編碼出來的檔案具有唯一碼性質的即時碼。也就是各個相異字元所編碼出所位元串並不相同,解碼時能立即解出,普遍應用在一般商業壓縮軟體、傳真機及無失真之靜態影像上。
-影像與一般檔案的壓縮比?
為何影像經壓縮軟體(winrar)的檔案大小幾乎與原來無所差別,或者是壓縮比不大?又文件壓縮比較大?
由於影像之格式大多已經過壓縮,如jpg,mp3等影音檔案本身皆已經過壓縮,所以壓縮軟體僅能夠壓縮些許;而文件因檔案特性,重複性較高,所以可做壓縮精簡的動作。
部分來源:http://www.nsc.gov.tw/_newfiles/popular_science.asp?add_year=2007&popsc_aid=55&page=2
By Melvin
作業
week6
2007年10月24日 星期三
本次作業~
(a)減法混色
(b)加法混色
(b)加法混色
a.撰寫程式中遭遇到的困難:
是有想法在Image裡用滑鼠點一下就能跑出選擇的形狀大小與圖形,但是一想
到要打入一堆沒看過的程式碼就有點想放棄了,但是聽說學長們好像有BCB的
指令庫的書,只是最近比較忙,有空在跟學長借來自習一下吧(大概
b.心得:
每次都被儲存之後要開啟卻跑出錯誤的情形害死,害得我每次一上課都要連前
面教的叫出來重打一遍,這次學乖了,直接save all,管他union,再錯的話.....
我也不知道要怎麼半拉@@
還有就是,程式碼自己不看過一遍只是複製貼上的話還真的是沒有幫助,連現
在要我想內容我大概也記不起來= =
---------------------------------------------------------------------------------------------
本週閱讀作業:
為甚麼相同的電視,插上有支援HDTV跟沒插上HDTV的插頭有差這麼多?
是因為要執行好的畫面需要有好的平台來搭配?那電視本身提供了甚麼?
訂閱:
文章 (Atom)