OpenGL裡matrix的應用非常重要,了解其用法卻實有助了解繪圖原理。
以下為物件轉成影瑩幕坐標的過程
1. Modelview Matrix 表示物件轉換後的眼睛坐標(eye coordinate),亦即當我現在給予一個點坐標a, 此坐標在眼睛坐標上為 e = Ma。
2. 而 Projection Matrix 則為將眼坐標轉成投影坐標(如垂直投影或透視投影)。如 j=Pe。
3. j=[x,y,z,w],將x、y、z各除上w,得到正規設備坐標(Normalized device coordinate),n=[x',y',z']。
4. Viewport transformation 為將n轉成影瑩幕坐標的矩陣,其瑩幕點 p = Vn。
因此一個物件的轉換需經過許多矩陣才能得到相對應的瑩幕上的點。
因些當我們要繪製上臂,手肘和手掌時,可以先將前矩陣存入stack,再把矩陣轉移到上臂的矩陣,然後開始繪至上臂。接著再將矩陣轉移至手肘的位置,以繪製手肘。之後再把矩陣轉移至手掌位置,便開始繪製。最後再將stack pop出來就可以回來原來的位置了。
透過距陣繪圖的好處是可以簡少計算物體位置的複雜度。
而相機坐標其實也可以視為是一種矩陣轉換。
因此,若我們要繪裝一個小型的動畫,可以考慮如下步驟:
1 儲存I矩陣
2 套用相機轉換矩陣
3 繪製不移動的物件
4 繪製移動物件
4.1 儲存當前矩陣
4.2 套用物件的矩陣
4.3 繪裝物件的點
4.4 取回矩陣
5 取回IV
但是在OpenGL Super Bible裡的例題裡,每一次rander都要跑如此多的次數,造成才繪製幾個物件其資源就花費極大。或許之後可以看到些更好的方法。
2010年11月7日 星期日
2010年11月4日 星期四
MBP睡眠也會發熱…
最近發現一件非常不尋常的事,而且我以前竟然沒有注意到。
為了省電,我的MBP都是使用hibernate來睡眠的,也就是說,記憶體的資料存放在硬碟上的休眠。理論上相較於sleep,應該是不會耗電才是。但我發現,插著電源的MBP睡眠後,隔了一段時候機子竟然是溫熱的。這頗讓我驚訝的,印象中以前是不會這樣的。
但是如果把插頭拔掉再睡眠,就再有發熱的情況了。但我仍發現開機時,電池落至98%,難不成當我插著電源睡眠時,我的MBP在充電?真的是太怪了,他如果要充電我也不介意,但沒記錯的話,90%之後的充電都應該是緩慢的才是,也不至產生如些多的熱吧。
另外也發現一件事,我有使用延伸瑩幕,有時候當MBP從睡眠中起來時,我發現MBP的瑩幕竟然不見了,轉而是廷伸瑩幕成了主瑩幕。或許我該清清開機快取設定也不一定。
希望電池不要膨脹,要膨脹也請在保固內呀!
2010年10月22日 星期五
Mac的開機過程
當按下開機鍵時,你可以從Mac的畫面上觀察到下列的動作:
以上資料,為Mac101的翻譯筆記。
- 聽到開機聲音(chime)
- 出現有著Apple Logo的灰色畫面並有著小輪子轉動著
- 變成藍色的畫面
- 最後顯示桌面或是登入畫面
其實在這幾個階段裡,Mac可是完成了很多事,如果有固障也可以從這邊察看。
開機鐘
當按下電源鍵時,Mac開始做硬體的初始化,並啟動BootROM(相似於BOIS)。B ootROM存在主機板上的快閃記憶體裡,其實他就像個很微小的作業系統,幫助OSX作業系統載入和載入前的動作。
一開始,BootROM會開始硬體自我檢測(POST, Power-On Self Test),檢察處理器、記憶體、…、周邊硬體等。如果通過測試,那麼你會聽到開始鐘響,並且看到灰色畫面出現。
若是沒有通過測試,則有可能仍然是黑色畫面,也可能看到相關錯誤碼。不同的型號可能會有不同的錯誤碼。錯誤碼有可能是聲音,或是光緣的閃爍,或是兩者的組合等。通常apple商店的店員不會清楚知道這是哪種錯誤,需要送到apple認證的維修中心(AAPS, Apple Authorized Support Provider),在台灣就像是優仕或精技等廠商。
灰色的進入畫面
BootROM從系統開機檔案(sysytem booter file)上取的開機位置(儲存在NVRAM中),EFI便啟動開機程序載入MacOSX或是Windows到硬碟上。當出現灰色的畫面時,就是系統正在載入中。如果找不到系統開機檔,就會出現一個有問號的資料夾了。
系統開機檔的選取可以透過OSX的Starup Disk或是Windows的Boot Camp控制面板中更改。
也有幾個按鍵可以讓開機時做調整:
- C:從光碟片開機
- T:透過firewire從外部硬碟開機
- Option:啟動開機管理,可以選擇要啟動的空間是要OSX或是Windows。選擇不會存在NVRAM上。
- Shitf:啟動安全模式。
- Command-V:這個選項能看到背後的開機狀況文字,而不會有灰色畫面。
- Command-Option-P-R:重置NVRAM設定並重開機。
開機程序會載入OSX的kernel和kernel extensions,如此Kernel可以控制系統並且繼續載入的程序。當成功載入kernel時,會執行launchd這個程式,同時就可以看到灰色畫面下方有轉動的齒輪。
藍色畫面
當launchd啟動WindowServer程序時,畫面便呈現藍色。WindowServer負責繪製OSX的使用者介面。同時,launchd也執從loginwindow.app。因設定不同,loginwindow會顯示登入視窗,也可以直接帶進桌面。
以上資料,為Mac101的翻譯筆記。
2010年10月20日 星期三
早知道的數學
大一大二的時候學了很多學門,包涵工程必修的微幾分、線性代數和離散數學等。一次次的考試都在充分的準備下通過了,也因應付考試,事後學的理論都過眼雲煙。
大一的時候一直想不透,為什麼我們學電腦學程式需要去了解這麼深奧的學數和公式?
原以為上了大學進了資工領域,我就應該把重心放在電腦上。像是計算機組織和作業系統資科結構等,都是很輕易就可以和電腦有關連了,反到是微機分大三之後竟然都沒在碰過他了。
大一以來,我的嗜好不外乎去誠品走馬看花,不然就是拿起筆在紙上天馬行空起來。也偶而接個網頁製作和簡單的電腦繪圖來賺點生活費,但是電腦程式我卻是只有在課堂需要才會動手起來敲個鍵盤然後上傳,除此之外我和程式再也沒有交集。
資工人不喜歡寫程式很怪嗎? 好像真有點怪異…
或許我總是沒有想要寫的東西。
大四了,要畢業也要先完成學校的畢業專題。沒想到會接到這麼棘手的問題,先是對題目一知半解,又是對內容沒有方向。看了幾篇paper,又從paper往上鏈結其他paper找尋其他可用資源,才發現,原來那些被我遺忘或是被我唾棄的東西,現在都來報仇了。
paper很多公式,為了簡化大量運算,便用矩陣來表達。看了一群矩陣轉來轉去,我開始感到焦慮,就像被小朋友問"八仙過海"這總簡單,卻又想不到答案般的煩躁。
之後paper又出現一堆似懂非懂的詞語,學妹說,這好像高中有教過!!
真得嗎? 看了看那個詞,linear programming...線性寫程式?? 程式就程式,哪來的線性程式…
之後又看到nonlinear programming...天呀…什麼又是非線性程式…
不信邪,網路上找看看,結果都是模菱兩可的資料。只好上圖書館查,一查就是一本大原文書。讀了內容,才發現原來高中真有教過這東西,只是沒那麼複雜,也沒那麼多變數,沒那麼多理論。我才知道原來他叫做線性規劃,而不是指coding。而他在幾合上又有convex和concave的特性等等。我肯定這些詞在大一大二的課程上都有提過,只是考完我也不再理會他了。
感謝同學願意找我一起去程式設計比賽,一拿到題目我便發覺到,幾乎全都是數學問題!怎麼程式比賽變得像是數學電腦比賽?但仔細看題目,那些情境幾乎都是需要處理大量資料模型,這種當然是電腦算才有效益。
原來,學習電腦、學習程式,都只是在為決解問題開一條路。而數學,他竟然主導了這些問題的核。公司理財需問題可以有相對應的數學模型,網路分配也有數學模型,林林總總的問題幾乎都可以轉成數學模型,再透過相對應的模型找解決的數學方法。
這個道理幾乎所有人都知道。數學為科學之母。每想到我現在才頓悟這偉大的道理。
就像我哥大一送我一件褲子,直到前幾天我才在上廁所的時間赫然發現竟然是T牌的褲子!這麼好的東西我竟然過了這麼久而且在這麼的情況下發現,我真是太對不起我老哥了。
老師早在之前就教授了很多入門的數學工具了,我卻一直視而不見。卻在現在才發現他的重要性,我相信現在知道不算晚,但也不能再停滯不前了。尤拉對數學的執著讓他右眼再也不健康,霍金似然全身癱瘓,但是他對宇宙的熱情仍可透過機器和人們溝通。我相信我會有找到熱情的那一天。
大一的時候一直想不透,為什麼我們學電腦學程式需要去了解這麼深奧的學數和公式?
原以為上了大學進了資工領域,我就應該把重心放在電腦上。像是計算機組織和作業系統資科結構等,都是很輕易就可以和電腦有關連了,反到是微機分大三之後竟然都沒在碰過他了。
大一以來,我的嗜好不外乎去誠品走馬看花,不然就是拿起筆在紙上天馬行空起來。也偶而接個網頁製作和簡單的電腦繪圖來賺點生活費,但是電腦程式我卻是只有在課堂需要才會動手起來敲個鍵盤然後上傳,除此之外我和程式再也沒有交集。
資工人不喜歡寫程式很怪嗎? 好像真有點怪異…
或許我總是沒有想要寫的東西。
大四了,要畢業也要先完成學校的畢業專題。沒想到會接到這麼棘手的問題,先是對題目一知半解,又是對內容沒有方向。看了幾篇paper,又從paper往上鏈結其他paper找尋其他可用資源,才發現,原來那些被我遺忘或是被我唾棄的東西,現在都來報仇了。
paper很多公式,為了簡化大量運算,便用矩陣來表達。看了一群矩陣轉來轉去,我開始感到焦慮,就像被小朋友問"八仙過海"這總簡單,卻又想不到答案般的煩躁。
之後paper又出現一堆似懂非懂的詞語,學妹說,這好像高中有教過!!
真得嗎? 看了看那個詞,linear programming...線性寫程式?? 程式就程式,哪來的線性程式…
之後又看到nonlinear programming...天呀…什麼又是非線性程式…
不信邪,網路上找看看,結果都是模菱兩可的資料。只好上圖書館查,一查就是一本大原文書。讀了內容,才發現原來高中真有教過這東西,只是沒那麼複雜,也沒那麼多變數,沒那麼多理論。我才知道原來他叫做線性規劃,而不是指coding。而他在幾合上又有convex和concave的特性等等。我肯定這些詞在大一大二的課程上都有提過,只是考完我也不再理會他了。
感謝同學願意找我一起去程式設計比賽,一拿到題目我便發覺到,幾乎全都是數學問題!怎麼程式比賽變得像是數學電腦比賽?但仔細看題目,那些情境幾乎都是需要處理大量資料模型,這種當然是電腦算才有效益。
原來,學習電腦、學習程式,都只是在為決解問題開一條路。而數學,他竟然主導了這些問題的核。公司理財需問題可以有相對應的數學模型,網路分配也有數學模型,林林總總的問題幾乎都可以轉成數學模型,再透過相對應的模型找解決的數學方法。
這個道理幾乎所有人都知道。數學為科學之母。每想到我現在才頓悟這偉大的道理。
就像我哥大一送我一件褲子,直到前幾天我才在上廁所的時間赫然發現竟然是T牌的褲子!這麼好的東西我竟然過了這麼久而且在這麼的情況下發現,我真是太對不起我老哥了。
老師早在之前就教授了很多入門的數學工具了,我卻一直視而不見。卻在現在才發現他的重要性,我相信現在知道不算晚,但也不能再停滯不前了。尤拉對數學的執著讓他右眼再也不健康,霍金似然全身癱瘓,但是他對宇宙的熱情仍可透過機器和人們溝通。我相信我會有找到熱情的那一天。
2010年10月18日 星期一
開宗明義
其實都過了那麼多個年頭才想到要打網誌實在是有夠落伍。不過想到青春只留在自家腦海裡也不太好,哪天人老了頭腦不清楚,至少也有個網誌可以讓我回味一下呀。因此,想來想去還是辦了個帳號來開個板吧。當然也希望有緣人能捧個場啦,喜歡的話也請留個言吧。
整理一下OhDay的目標吧!
OhDay其實是我每天早上會感嘆的詞語。這麼一天來了又走,實在是船過水無痕。想起青春似水年華,怎麼可以就這樣讓他過了呢!!
Oh Day...不是蚵爹!雖然我也很喜歡吃啦!簡單來說…以下是我目前對OhDay的期許:
雖然看起來很少,但要開始做也很困難!
整理一下OhDay的目標吧!
OhDay其實是我每天早上會感嘆的詞語。這麼一天來了又走,實在是船過水無痕。想起青春似水年華,怎麼可以就這樣讓他過了呢!!
Oh Day...不是蚵爹!雖然我也很喜歡吃啦!簡單來說…以下是我目前對OhDay的期許:
- 學習的筆記
- 生活的領悟
- 想法的描述
- 作品的發表
雖然看起來很少,但要開始做也很困難!
不免俗得,我也要為自己打打氣!!比爾蓋茲、賈伯斯都很棒!!Goolge和Facebook的創辦人,都年輕就有為…張愛玲也說,出名要趁早。或許我不出名,但我也希望有朝一日,我也能有我的小天地!!
Oh~~Day~! 我們加油吧!
訂閱:
意見 (Atom)