看板 Soft_Job 關於我們 聯絡資訊
實例的話,我以前接過的案子 用上了所有我懂的線性代數 http://blog.ez2learn.com/2009/08/26/pysketch/ 一套向量式的繪圖程式,畫圖的部份使用Cairo,所以這部份的數學 都是由函式庫包辦,但除了畫圖以外的部份都得自己去算 一個最簡單的實例,滑鼠的游標離某條線段有多遠? 因為線段不佔有空間,因此得給他一塊虛擬的面積來方便選取 最簡單的方式就是算出滑鼠離線段的最短距離 面積的形狀看起來會像是條香腸 點和線的關係總共有兩種case,第一種是離兩端點的距離在範圍內 所以不管三七二十一,先拿鼠標位置去算和兩端點的距離 夠近的話就表示在範圍內 另一種case,就是算和線段的距離了,最直覺的想法就是去算鼠標位置 和任一端點的向量,和線段之間的投影,去算出法向量來 mp ● / | / | / | / | p1 ●---------------● p2 sp 這樣一來只要先算出 p1 mp 向量在 p1 p2 向量上的影長 接著算 p1 p2 的單位向量,然後算出p1 sp的向量 就能算出法向量 sp mp 也就能得知滑鼠點 mp 到線段 p1 p2 間的距離 但這還有個問題,就是 mp可能是在線段外面 | above | |-----------------------| p1 p2 line | below | mp必需要在 above 和 below的範圍內,否則整個判斷 就變成是對於直線而不是線段,那要如何判斷在範圍內? 很簡單,算出 p1 sp 的向量 和 p2 sp 的向量時,看它的方向正負 就可以知道它是否是在 above 和 below 的範圍內 這是其中典型用到線性代數的例子 還有很多類似的情況,得用這種方式來算出來 這個case最難的部份是手繪圖型辨識,整個case花了兩週 其它部份加起來一週,手繪辨識做一週 手繪辨識的部份用到了更多的線性代數 但說穿了用的都是我會的簡單方法組合起來 沒用到什麼太高等的東西 但是我得說那些東西我大多都是自己學會的 我大一線性代數還被當掉,因為都沒去上課 早在接觸線性代數以前,就多少有算過相關的東西 不過在看了課本上描述的東西後才瞭解 有這樣的一整套系統是用來解決這類問題的 以我以前寫的2.5D地圖引擎來說 http://kaka-demo.ez2learn.com/ 像這種地圖,因為是斜向座標系,所以和一般的直角座標間要有個轉換 國中時只懂得從 地圖座標 轉 直角座標 但 直角座標 轉 地圖座標 沒導出來 所以當要判斷滑鼠指在地圖的哪個格子上時 就用了很蠢的方式去算,記得好像是用一個mask 去判斷是否在那型狀內,很蠢,但可以運作 到了高中知道原來可以去算反矩陣 所以地圖座標轉直角座標就可以用公式去算 簡單又有效 所以,以我自己的經驗來說 我認為,有些東西就算你不懂數學也能用較笨的方法達成 但你懂數學的話,方法會聰明許多 而某些應用的領域,可能是你不懂數學就沒辦法處理的 但是數學的領域這麼廣,圖學用的可能是線性代數 如果是密碼學就是數論,影像處理還得扯微積分 機械學習也扯到很多數學 我想沒有多少人可以懂所有的數學領域 所以這種東西是一種專業,對於程式設計某種應用領域上的專業 沒有這樣的專業也能活得很好,因為大部份的應用都將數學包裝好了 然而如果要接觸那些沒被包裝好的部份,數學就成了必需的技能 這就要看對自己的定位在哪裡 我自己對於自己的定位在於高階的應用開發 能用包裝好的東西就用,真的不能的話,有需要再去學 你要知道的是有哪些東西可以用,可以用來做什麼 而不是一鼓腦將那些東西全硬塞進腦子裡 沒有用到很快就忘了 浪費時間而已 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.170.210.161
codemonkey:我記得StubbornLin一直有在玩遊戲繪圖、圖學的東西 12/31 11:37
codemonkey:這些領域不用數學好像也不行 12/31 11:37
StubbornLin:嗯 有在用的東西學很快 沒在用硬學的話 12/31 11:43
StubbornLin:連那東西可以做什麼學完都還不知道 = = 12/31 11:43
StubbornLin:我的同學們很多可能在學線代都會覺得這有啥用 12/31 11:43
StubbornLin:但我在學時就瞭解以前導的公式原來都有一整套系統 12/31 11:44
StubbornLin:那就是線性代數 12/31 11:44
codemonkey:我的話就是離散的東西用比較多 12/31 11:46
hidog:線代到後來可以跟可積函數結合 12/31 11:54
hidog:實際上 可積函數本身可形成一個vector space 12/31 11:54
hidog:在這樣的條件下 可以討論很多力學 流體等等的數值計算 12/31 11:55
StubbornLin:喔 線代的書上好像有看過 12/31 11:55
StubbornLin:但那超過我領域太多 第一眼看到想不到用途的東西 12/31 11:55
StubbornLin:對我來說真的通常都不會用到 12/31 11:56
hidog:是阿 因為我學生時代碰的是應數 有時候會想,沒走數學很可惜 12/31 11:56
hidog:但是走了在台灣又找不到工作 QQ 現在人在遊戲廠碰博奕遊戲 12/31 11:56
StubbornLin:那你至少用得上機率論阿 XD 12/31 11:57
hidog:要說跟數學最有關的大概是機率吧? 博弈總是跟機率扯上邊 12/31 11:57
hidog:是阿XD 是還好我學的很雜 要轉很方便 (當年代數修到99分) 12/31 11:57
hidog:結果沒走加密演算法幹嘛的 念一堆東西現在也用不到XD 12/31 11:58
howshou:資訊領域統計用得超多的吧,不過統計與機率密不可分 12/31 11:59
StubbornLin:科科 我統計學也被當 XD 12/31 12:01
hidog:我統計學沒被當 但是是我數學唯一念不來的東西 12/31 12:04
hidog:結果後來才發現這東西用的超廣 幾乎到處都用的到~_~ 12/31 12:04
StubbornLin:反正 要用到再去學 記得當時學一堆啥鬼卡方檢定的 12/31 12:06
StubbornLin:到現在也從沒用過 12/31 12:06
hidog:出了社會後,熟悉開發環境是第一步吧 ? 學校學的都是基礎 12/31 12:09
hidog:基礎好,以後進步會比較快 但是學校學的跟就業市場要的 12/31 12:09
hidog:本來就不見得一定會有關係 這是我的感覺啦@@ 12/31 12:09
andymai:推~不懂數學可能也可以做~但是懂數學~真的瞬間聰明許多... 12/31 13:00