我找到了一个名为pyeuclid的库,它似乎在 3D 数学方面做了我想要的。它包含一个 3D 矢量类和一个 4X4 矩阵类,能够进行旋转、平移和缩放等变换。
矩阵创建很简单,只需传递参数即可创建矩阵。
>>> m = Matrix4()
>>> m.translate(50,50,50)
Matrix4([ 1.00 0.00 0.00 50.00
0.00 1.00 0.00 50.00
0.00 0.00 1.00 50.00
0.00 0.00 0.00 1.00])
图书馆带有一个 3D 矢量类,如果我想用这个矩阵转换一个 3D 点,我需要首先创建矢量类,像这样。
>>> v = Vector3(100,200,300)
>>> v
Vector3(100.00, 200.00, 300.00)
>>> v.x
100
>>> v.y
200
>>> v.z
300
现在 Matrix4() 类带有一个转换坐标的方法,它的使用方式就是这样。
>>> m.transform(v)
Point3(150.00, 250.00, 350.00)
这很好,但是,没有应用透视投影,该库带有一个名为 Matrix4.new_perspective(fov_y, aspect, near, far) 的方法。这就是问题所在,我不知道如何正确使用这个函数,(m.transform(vector3) 不会产生任何可用的东西)文档没有显示它如何与向量或其他矩阵一起使用,它说的是“相当于” OpenGL 调用 gluPerspective.fov_y',但我从未使用过 opengl,所以这无济于事。
这是模块(来自 euclid 导入 Vector3,Matrix4)
我不想要的是一些游戏引擎/可视化库的推荐,或者是那些致力于在屏幕上绘制东西的东西,我只想知道我是否可以使用这个库将 3D 矢量坐标转换为 2D 屏幕坐标,如果不是我可以使用什么库???
所以进入那里帮助遇险的菜鸟!:-) 感谢您的帮助。