Delphi简单的3D函数

7
有没有人能帮我提供 Delphi 中一些裸体、老式的三维方法的示例?不使用 OpenGL、FireMonkey 或任何外部库(纯画布编码)。我想做的是能够围绕一个共同的原点旋转 X 数量的点。从我记得的古老日子起,你要减去左边的值,然后将计算结果添加到左/上像素偏移,以获得实际屏幕位置。
我正在寻找一组小的特别定制的例程,如下:
  • RotateX(aValue:T3dpoint; degr:float):T3dPoint;
  • RotateY(--/--)
  • RotateZ(--/--)
使用这些函数应该很容易创建旧的“旋转 3D 立方体”(8 个点)。
此外,是否有函数来确定可见的“面”?如果我想要一个填充的矢量立方体,那么我需要提取可见区域(基于距离/重叠?),这反过来又绘制为 X 数量的填充多边形?这些肯定必须按深度排序,才不会出现问题。
例如:
  • PointsToFaces(const a3dObject:T3dPointArray):TPolyFaceArray;
  • SortFaces(Const aFaces:TPolyFaceArray):TPolyFaceArray;
欢迎任何帮助!

我也会混淆它们,但在Delphi中它被称为“real”,而不是“float”。 - Andreas Rejbrand
为什么不至少获取glScene? - Warren P
因为我将在Smart Mobile Studio下编译,该编译器将Object Pascal编译为JavaScript。而且OpenGL在Safari移动版上不受支持。我只是想了解基础知识,以便通过尝试来学习它。 - Jon Lennart Aasenden
2个回答

8

对我的需求来说有点过度,但是源代码显示了数学函数名称,给了我一个很好的起点。谢谢! - Jon Lennart Aasenden

5

我几年前写了一个简单的3D渲染“引擎”,仅使用朴素的线性代数。虽然可能不是最有效的,但如果您想要能够移动得相当平稳,则点数的限制为几千个。这里有一个示例EXE。如果您喜欢,可以获取代码,但它可能不是那么漂亮。


3
我应该提到,我很快放弃了我的原型,转而采用OpenGL,这也是AlgoSim中使用的技术。 - Andreas Rejbrand
我打算将代码转换为Smart Mobile Studio,因此OpenGL还不是一个选项。这只是为了正确掌握基础知识。 - Jon Lennart Aasenden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接