任何人都可以帮我举一些德尔福中一些简单的、老式的 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;
欢迎任何帮助!