Я нашел библиотеку под названием pyeuclid , и она , кажется, делает то, что я хочу в отношении трехмерной математики.он включает в себя трехмерный векторный класс и матричный класс 4X4, способный к преобразованиям, таким как вращение, преобразование и масштабирование.
matrix создание простое, просто передайте аргументы и матрица будет создана.
>>> 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, если бы я хотел перевести трехмерную точку с этой матрицей, мне нужно было бы сначала создать векторный класс , например, так:
>>> 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, аспект, ближний, дальний).Вот в чем проблема, я понятия не имею, как правильно использовать эту функцию, (m.transform (vector3) doesent создает что-либо полезное), документация doesent показывает, как она используется с векторами или другими матрицами.кое-что о том, чтобы быть «эквивалентным вызову OpenGL gluPerspective.fov_y», но я никогда не использовал opengl, так что это не поможет.
это модуль (из euclid import Vector3, Matrix4)
то, что я не хочу, это рекомендации для некоторого игрового движка / библиотеки визуализации или что-то, что сгибается при рисовании чего-либо на экране, я просто хочу знать, могу ли я использовать эту библиотеку для превращения трехмерных векторных координат в 2D-экранкоординаты, и если нет, то какую библиотеку я могу использовать ???
, так что иди туда и помоги Нубу в беде!:-) спасибо за помощь.