跳到主要內容
黯羽輕揚每天積累一點點

1D數學

免費2015-09-18#Math#1D数学

很有趣的理解方式,從發展史的角度解釋自然數、數軸、負數、分數、小數、實數等數學概念

兩千多年前,人們為了方便「數羊」而發明了自然數,「一隻羊」的概念很容易理解,接下來是「兩隻羊」和「三隻羊」,以此類推。人們很快意識到這樣數下去工作量巨大,於是就在某一點放棄計數而代之以「很多羊」。不同的文明在不同點放棄計數。隨著文明的發展,我們漸漸可以支持專門的人去思考「數字」,這些人不用考慮生計問題。這些智者確定了「零」的概念(沒有羊),他們不準備為所有的自然數命名,而是發展出了多種計數體系,在需要的時候再為自然數命名,使用數字「1」,「2」等(羅馬人使用「I」,「V」,「X」之類的)。這樣,數學誕生了。

人們習慣於把羊排成一排來計數,這導致了數軸概念的產生,在一條直線上等間隔地標記數字。理論上,數軸可以無限延長,但為了方便,我們只標識到了某個數值,後面用一個箭頭來表示數軸可以延長。歷史上的思想家們想到它能表示無窮大的數,但羊販子們可能不會理解這個概念,因為這已經超出了他們的想像。

如果您很健談,就能勸說別人買一隻您實際上沒有的羊,由此產生了債務和負數的概念。賣掉這隻想像中的羊,您實際有「負一」隻羊。這種情況導致了整數的產生——由自然數和他們的相反數(負數)組成。

貧窮的出現顯然早於債務,貧窮致使一部分人只買得起半隻羊,甚至四分之一隻羊。於是產生了分數——由一個整數除以另一個整數形成,如2/3,111/27數學家們稱這些數為有理數,有理數填補了數軸上整數之間的空白。為了方便,人們發明了小數點表示法,用「3.1415」來代替冗長的31415/10000。

過了一段時間,人們發現日常生活中使用的有些數無法用有理數表示,最典型的例子是圓的周長與直徑的比,記作PI。這就產生了所謂的實數,實數包含有理數和PI這樣的無理數——如果用小數形式表示,小數點後需要無窮多位。實數數學被很多人認為是數學中最重要領域之一,因為它是工程學的基礎,人類使用實數創建了現代文明,最酷的事情是有理數可數,而實數不可數。研究自然數和整數的領域稱為離散數學,研究實數的領域被稱為連續數學

事實上,實數只是被文明文化所認可的,約定俗成的一種概念。許多著名物理學家們都認為:實數只是一種錯覺,因為宇宙是離散和有限的。如果現實世界是由有限個離散事物組成的,那麼我們只能夠計數到某個固定值——因為我們已經數完了世界中的所有事物(不僅我們數完了羊,連烤麵包機、修理工等也都數完了)。由此我們斷定,僅用離散數學就能描述整個宇宙,並且只需要用到自然數的一個有限子集(很大但可數)。也許宇宙中就存在著一個超越我們科技的文明,他們從來沒有聽過連續數學、基本微積分理論,甚至是無限這樣的概念。他們從不使用PI,而是使用3.14159(或者更精確的3.1415926535897932382626433832795)就可以建造完美的世界。

(《三體I》中提到外星人只在飛船上標記一個點就能帶走整部百科全書的例子,說的正是這個意思)

那為什麼還要使用連續數學呢?因為它在工程學上非常有用。但值得注意的是現實世界中使用的術語「實數」,通常是離散的意思。對3D虛擬世界的設計者來說,需要注意什麼呢?和現實世界一樣,將要處理的是一系列離散和有限的事物,可以使用C++提供的多種資料型別來描述3D虛擬世界,包括short,int,float和double。short是16位元整數,能代表65536個不同的數值,雖然這個數很大,但度量現實世界還是遠遠不夠的。int是32位元整數,可以代表42億個不同的數值。float是32位元有理數,可以代表42億個數值。double與float類似,是64位元有理數。

為虛擬世界選擇度量單位關鍵是選擇離散的精度,有一種錯誤的觀點認為short、int是離散的,而float、double是連續的,而實際上這些資料型別都是離散的。以前的電腦圖形學教材通常建議選用整數,因為那時硬體處理浮點數的能力要比處理整數弱,但對於現在的硬體。這種說法已經過時了。那應該怎樣選擇精度呢?電腦圖形學的第一準則:

電腦圖形學第一準則:近似原則如果看上去是對的它就是對的

(電腦中的PI不是實數,但我們認為它就是實數,就是被普遍認同的那個小數)

##後記

1D數學是1根數軸(這樣理解的話默認了數是連續的),2D數學是2根數軸(2D笛卡兒座標系),3D數學是3根數軸(3D笛卡兒座標系)。。。

###參考資料

  • 《3D數學基礎:圖形與遊戲開發》

評論

暫無評論,快來發表你的看法吧

提交評論