简单的Delphi 3d功能

Jon*_*den 7 delphi 3d graphics 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;

欢迎任何帮助!

kob*_*bik 8

以下是来自efg的Reference的Delphi Math的一些很好的旧资源. 您可以找到图形项目列表.2D/3D Lab矢量图形:平移,旋转,缩放,视图变换,齐次坐标,裁剪,投影,矢量,矩阵等...


And*_*and 5

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

  • 我应该提一下,我很快放弃了我的原型,转而使用[AlgoSim](http://www.algosim.se)中使用的OpenGL. (3认同)