1. 程式人生 > 實用技巧 >「XSection立體幾何」中心投影和平行投影

「XSection立體幾何」中心投影和平行投影

投影

話說前幾天我在翻北師大版九年級上冊數學書時,發現這本書的第五章是“投影與檢視”。(這遊戲沒有漢化,這使書上術語的英文名是我感到十分親切。。)

這一章的第一小節就是投影,但其實對於立體幾何,書上講得非常簡單,這節的重點其實是承接上一章《圖形的相似》,利用相似三角形來計算投影的位置。

即使是這樣,我覺得還是很有必要放一下教科書上對投影的定義的:

物體在光線的照射下,會在地面或其他平面上留下它的影子,這就是投影(Projection)現象,影子所在的平面稱為投影面。

本來,小編覺得這句話的前半句太過物理化,不像數學語言的風格。但我之後又發現 百度百科 和 Wikipedia 上都是差不多的解釋,也就認了這個定義。

直到我翻了翻 XSection 的術語表:

它的解釋是這樣的:

A projection is a correspondence between the points of an object and a plane.

翻譯成中文就是:

投影是物件上和平面之間點的的對應關係

其中,correspondence這個詞就用得非常妙,一開始我其它詞都認識,只有這個不知道什麼意思,之後上谷歌翻譯查了查,Google 給我的解釋是 “對應”。

我認為這個術語表中的解釋是非常到位的,至少在遊戲中是適用且非常嚴謹的。

在後面的關卡中,會有許多需要找出投影的任務,這類題無非分兩種,一種是已知平面上的投影,求物體(object)上的點。

一種是已知物體上的點,求它在已知平面上的投影。

而只要掌握了這種對應關係,這兩種問題都可以迎刃而解。

中心投影

按照數學書對投影的解釋,把光源看作是一個點,也就是所有的光線都會相交在一個點上,就是中心投影。

數學書上的定義如下:

手電筒、路燈和檯燈的光線可以看成是從一個點發出的,這樣的光線所形成的投影稱為中心投影。

最典型的例子就是燈泡了,我們可以將它看作是一個點光源,會向各個方向發光。手電筒還並不是一個典型,因為許多手電筒發出的其實更像是平行光。

在 XSection 中,它的定義是這樣的:

A central projection is a projection in which all projective rays passes through a given point S (the center of projetion).

翻譯過來就是:

中心投影中的每個投射線經過一個已知的點S(投影中心)。

平行投影

對於平行投影,一個很有意思的點是,太陽和燈都在向各個方向發光,但人們一般把燈光看作是點光源,使用的是中心投影,而太陽光則是平行光線,使用平行投影。

這主要是因為,太陽離我們太遠了,物體上的任意兩個點與太陽構成的三角形的那個角實在太小太小了,完全可以看作是平行的。

對於平行投影,書上的定義是這樣的:

太陽光線可以看成平行光線,平行光線所形成的投影成為平行投影(parallel projeciton).

百度百科上說:

如果把中心投影法的投射中心即光源S移至無窮遠處,則各投射線成為相互平行的直線,物體投影就不受距離變化的影響,這種投射線都互相平行的投影法稱為平行投影法。

而 XSection 上的定義,則更加嚴謹和明確:

A parallel projection is a projection in which all projection rays are parallel to a given line.

翻譯成中文就是:

平行投影指的是每一條投射線都與給定直線平行的投影。

一個例子

值得注意的是,在遊戲中,所有關於投影的題都不會提示你使用中心投影法或者平行投影法。

不知道各位有沒有發現,在畫圖上,平行投影法像是畫出了一個稜柱,而中心投影法像是畫出了一個稜錐。

這是因為稜柱的每條稜互相平行,正好符合平行投影中投射線的性質。稜錐中所有稜都會相交與一點,也符合中心投影的性質。

下面來看一個例子。因為 XSection 中是無法改變檢視的,再加上豎屏不方便觀看,我們就用 GeoGebra 進行演示:

這是 XSection 中的 3.4 題,我認為比較有代表性。題目是這樣的:

已知IH兩點,求線段 I、H 在底面上的投影。(過F點的直線FH和GC是相交的,原諒我忘了作交點了吧)

看到這個稜錐,首先想到的一定是中心投影法,因為它相當於給定了一個點G來求投影。

投影面當然是底面,這個在題目中有提到。

需要說明的是,直線FH的作用是表明點H在平面BGC上。事實上,FH//BC。

那麼作法就非常簡單了,首先連線並延長GH、GI。

下一步,找到這兩條射線和底面的交點。

這裡要注意的是,遊戲中你是無法直接找到線和麵的交點的,必須找到這個面上可以與它相交的一條線,然後點出線與線的交點(這其實也是後面很多題的難點)

在這道題中,這條線就是BC。第一節中講過,「一個平面上任意個點都是處在同一平面的」,所以,有了平面BCG,就有平面HCG,也就有交點J。

於是,根據同樣的方法,可以找到點I的投影點D。

最後,連線DJ,完成。

-> to be continued...