目錄
2.1 1D 數學
2.1.1 數學概念:自然數,整數,有理數,實數,以及它們之間的關系
- 人們為了方便 “數羊” 而發明了自然數:“一頭羊” 就對應數字 1,“兩頭羊”、“三頭羊” 以此類推。同時,確定了 “零” 的概念(即沒有羊)

-
如果能賣掉一個你不存在的羊,就實際上是有 “負一”只羊,這也產生了整數:由上面的自然數和它們的相反數(負數)組成
-
如果一個人很窮,那么這個人可能只買得起半只羊,甚至四分之一只羊,於是產生了分數的概念:由一個整數除以另一個整數形成,如 2/3,111/27。這些數稱為有理數,也就是數軸上整數之間的空白。同時發明了小數點表示分數,如 3.145 代替 31415/10000
-
日常生活中的某些數是無法用上面的有理數表示的,比如圓的周長與直徑的比,也就是 \(\pi\) ,——小數點后需要無窮多位,由此就產生了實數。實數包含有理數和形如 \(\pi\) 這樣的無理數
-
研究自然數和整數的領域稱為離散數學,研究實數領域的稱作連續數學
2.1.2 編程語言中short、int、float、double幾種數據類型之間的聯系
- 3D 虛擬世界的設計者需要處理的四一系列離散的和有限的事物,可以使用編程語言中提供的多種數據類型來描述 3D 虛擬世界,包括 short,int、float,double
- short:16位整數,可以表示 65536 個不同的數值
- int:32位整數,可以表示 4,294,967,296 個不同的數值
- float:32位有理數,可以表示 4,29,4,967,296 個數值
- double:64位有理數
- 以上這些數據類型都是離散的
- 為虛擬世界選擇度量單位的關鍵是選擇離散的精度
2.1.3 計算機圖形學第一准則
- 近似原則如果它看上去是對的它就是對的
2.2 2D 笛卡爾數學
2.2.1 2D 笛卡爾坐標系
-
每個 2D 笛卡爾坐標系都有一個特殊的點,稱為原點,是坐標系的中心
-
每個 2D 笛卡爾坐標系都有兩條過原點的直線向兩邊無限延伸,稱為“軸”
-
習慣/標准形式是,水平的軸稱為 x 軸,向右為 x 軸的正方向,垂直的軸稱為 y 軸,向上為 y 軸正方向
-
可以根據自己的需要來決定坐標軸的指向,也可以決定軸的正方向
-
2D 中有 8 種可能的軸的指向:
- 無論如何選擇 x 軸和 y 軸的方向,總能通過旋轉使得 x 軸向右為正,y 軸向上為正,所以所有的 2D 坐標系都是“等價”的
2.2.2 用笛卡爾坐標(x,y)定位 2D 空間內的點
- 為了在笛卡爾坐標系中定位點,引入了笛卡爾坐標的概念。
- 在 2D 平面中,兩個數(x,y)可以定位一個點,坐標的每個分量都表明了該點與原點之間的距離和方位:每個分量都是到相應軸的有符號距離
- “有符號距離” 指的是在某個方向上距離為正,在相反方向上為負
2.3 從 2D 到 3D
2.3.1 第三個維度,第三個軸
- 為了表示三維坐標系,引入第三個軸:z 軸。一般情況下,這三個軸相互垂直,即每個軸垂直於其他兩個軸
- 在 2D 平面中,指定 x 軸向右為正,y 軸向上為正為標准形式,在 3D 中沒有標准形式
2.3.2 在 3D 笛卡爾坐標系中定位點
- 在 3D 中定位一個點需要3個數:x,y 和 z,分別代表該點到 yz,xz 和 xy 平面的有符號距離

2.3.3 左手坐標系與右手坐標系
-
無論任意 2D 坐標系,總能使其變換為標准形式,所以所有的 2D 坐標系都是 “等價” 的
-
推廣至 3D坐標系中是錯誤的:通過旋轉只能使得兩個軸和目標坐標系相同,第三個軸總是和目標方向相反
- 原因在於,3D 坐標系之間不一定是等價的,存在着兩種完全不同的 3D 坐標系:左手坐標系和右手坐標系
- 如果同屬左手或右手坐標系,那么可以通過旋轉來重合,否則不可以
-
判斷坐標系的類型:右手螺旋定則即可
-
左、右手坐標系可以相互轉換,只需要翻轉一個軸的符號即可。如果同時翻轉兩個軸的符號,結果和不翻轉是一樣的
2.3.4 本書的主要約定
- 本書約定:使用左手坐標系,+x,+y,+z 分別指向右方、上方、前方
- 當 “右” 和 “前” 不明確的時候(如:對於世界坐標系),以 +x 表示向 “東”,+z 表示向 “北”
