2010-12-03 112 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