Visual Basic .Net 3D引擎
问题描述:
这是一个比编程问题更重要的数学问题。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轴的线的一部分?
答
你想画的一切,其中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
的主人MediaFire链接不再可用。 – 2018-03-07 23:55:19