7

任何人都可以帮我举一些德尔福中一些简单的、老式的 3d 方法的例子吗?不使用 openGL 或 firemonkey 或任何外部库(香草画布编码)。我想要做的是能够围绕一个共同的 origo 旋转 X 个点。从我过去的记忆中,你从右(在 3d 点上)减去左,这样 origo 总是 0,0 - 然后执行计算,最后添加左/顶部像素偏移以获得实际的屏幕位置。

我正在寻找的是一组小的临时例程,ala:

  • RotateX(aValue:T3dpoint; degr:float):T3dPoint;
  • 旋转Y(--/--)
  • 旋转Z(--/--)

使用这些函数应该很容易创建旧的“旋转 3d 立方体”(8 点)。

此外,是否有用于找出可见“面孔”的功能?如果我想要一个填充的矢量立方体,那么我想我需要提取可见区域(基于距离/重叠?),然后将其绘制为 X 个填充多边形?毫无疑问,这些必须按深度排序,以免弄得一团糟。

例如:

  • PointsToFaces(const a3dObject:T3dPointArray):TPolyFaceArray;
  • SortFaces(Const aFaces:TPolyFaceArray):TPolyFaceArray;

欢迎任何帮助!

4

2 回答 2

8

Here are some nice good-old resource for Delphi Math from efg's Reference.
You can find a list of graphic projects.
2D/3D Lab Vector graphics: translation, rotation, scaling, view transform, homogeneous coordinates, clipping, projections, vectors, matrices etc...

于 2012-02-12T20:49:20.737 回答
5

几年前,我确实编写了一个简单的 3D 渲染“引擎”,只使用了简单的线性代数。不过,可能不是最有效的。如果您希望能够相当平稳地移动,几千个点是极限。示例 EXE。如果你愿意,你可以得到代码,但它可能不是那么漂亮。

于 2012-02-12T19:03:51.797 回答