简单的Delphi 3d功能

时间:2012-02-12 18:55:50

标签: delphi graphics 3d freepascal fpc

有没有人可以帮我解决Delphi中一些裸机,老式3D方法的例子?不使用openGL或firemonkey或任何外部库(vanilla canvas编码)。我想要做的是能够围绕共同的原点旋转X个点。从我以往的记忆中,你从右边减去(在3d点上),使origo始终为0,0 - 然后执行计算,最后添加左/上像素偏移量以获得实际的屏幕位置。

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

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

使用这些功能,创建旧的“旋转三维立方体”(8分)应该相当容易。

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

例如:

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

欢迎任何帮助!

2 个答案:

答案 0 :(得分:8)

以下是来自Delphi Mathefg's Reference的一些很好的旧资源 你可以找到list of graphic projects 2D/3D Lab Vector graphics:平移,旋转,缩放,视图变换,齐次坐标,裁剪,投影,矢量,矩阵等...

答案 1 :(得分:5)

几年前,我确实只使用天真的线性代数编写了一个简单的3D渲染'引擎'。不过,可能不是最有效率的。如果你想要能够合理地平滑移动,那么几千个点是极限。 Sample EXE。如果你愿意,你可以获得the code,但它可能不那么漂亮。