2010-12-03 118 views
2

這是一個比編程問題更重要的數學問題。Visual Basic .Net 3D引擎

我已經使用Visual Basic .Net創建了一個非常基本的3D引擎。它用一個附加的z軸在屏幕上顯示線條。發動機工作,但是當線路的一部分低於0時,它會混亂並開始再次倒置線路。

這是怎麼計算的要點:

y = (point.y/z) + offset.y + camera.y 
x = (point.x/z) + offset.x + camera.x 

任何人都可以制定出一個辦法只繪製時相交的Z = 0軸的線的一部分?

(源代碼)http://www.mediafire.com/?ww77q26ywj3a5ry

+0

的主人MediaFire鏈接不再可用。 – 2018-03-07 23:55:19

回答

2

你想畫的一切,其中z> 0,因爲一切都在零下相機和其中Z ==零後面,這將炸燬,因爲你不能除以零。當10000值的東西足夠大,不會出現在屏幕上(「scuse C#的,但是這應該是一樣的反正)

y = z > 0 ? (point.y/z) + offset.y + camera.y : 10000; 
x = z > 0 ? (point.x/z) + offset.x + camera.x : 10000; 

:所以我會做到這一點。

如果你的Z軸在相反的方向指向,你要做到這一點:

y = z < 0 ? -1*(point.y/z) + offset.y + camera.y : 10000; 
x = z < 0 ? -1*(point.x/z) + offset.x + camera.x : 10000; 
+0

你可以使用Math.Sign(z) – Evgeny 2010-12-03 11:26:46