2010-02-19 22 views
1

我試圖做一個簡單的JavaScript,在畫布上繪製矩形,然後基於一點透視畫出側面。問題是,矩形的數量和它們的位置是任意的,因此面部傾向於以真正3D透視中不會發生的方式重疊。我怎樣才能確定正確的繪圖順序,使其不會發生?如何確定以單點透視方式繪製時的Z順序?

這裏有一些截圖來說明我的意思:

Screenshot 1 - 走錯了路。在這一個中,紅色,綠色和藍色塊的分組按照它們應該如何繪製的相反順序繪製。

Screenshot 2 - 正確的方法。這是應繪製的方式。

+0

d'... I I I I I I I I I I I I I I I I I I I I I I I I I I I I I現在修好! – Rob

+1

你的截圖現在不能運行......而且僅僅一年之後。保持它,如果它被引用的地方!壞www karma! –

回答

4

你要找的是所謂的Painter's Algorithm那就是隻要你沒有任何的相交面

+0

你可能是對的 - 我需要從「外面進來」畫畫。謝謝! – Rob

1

由於您的畫面不工作,我要帶胡亂猜測和假設你遇到的問題是從後到前繪製矩形產生奇怪的重疊。

解決此問題的一種方法是使用簡單的binary space partitioning。實質上,將每個面向前的矩形展開爲無限的平面。然後,將這些平面相交的所有邊矩形分開。然後,從前到後繪製不應該產品重疊,因爲在發生任何重疊問題的任何地方都會分割出矩形。

編輯:啊,現在你的截圖工作,我不認爲這是你的問題。好吧,我會留下答案。

相關問題