Библиотека Python для выполнения геометрических манипуляций произвольно-многомерных точек и векторов, а также инструменты CGI, чтобы сделать 4D сцену в качестве 2D-изображения.
main.py содержит определение простой 4D -сцены и кода, чтобы представить ее в 2D -изображение.
Point(list[float]) - точка или вектор
Poly(list[list[float]]) - коллекция баллов или векторов
Span(org:Point, basis:Poly) - basis или рама векторов, закрепленных в определенной точке ( org ) в пространстве. Может представлять подпространство, или (через подклассы) параллелоп или простой.
Body(org:Point, basis:Poly) - подкласс пролета. Содержит операции, общие для упрощений и параллелотопов.
Simplex(org:Point, basis:Poly) - подкласс тела. N-мерный простой простой (обобщение треугольника и тетраэдр), который представляет собой набор точек вокруг org вдоль векторов в basis с положительными коэффициентами, чьи суммируют его не более 1.
Parallelotope(org:Point, basis:Poly) - подкласс тела. N-мерный параллелоп (обобщение параллелограмма и параллелепипеной), который представляет собой набор точек вокруг org вдоль векторов в basis с коэффициентами между 0 и 1.
ObjectFace (
body : Simplex ,
normal : Point ,
color : ( R , G , B ),
surface : str
)Объекты объектов - это строительные блоки нашего пейзажа. Мы работаем с треугольными (простой) лицами, которые на одно измерение ниже, чем измерение сцены, поэтому в 4D сцене мы работаем с 3D -лицами, покрывающими поверхности 4D -объектов. Границы также должны быть ориентированы, поэтому мы храним их нормальный вектор, а также их цвет и тип их поверхности, который определяет расчет, используемый для эффектов освещения (например, матовая, полупрозрачная и т. Д.)
Camera(space:Span, focd:float) - Определяет камеру. Камера определяется пролетом, охватывающим все пространство с ортонормальной основой. Первые векторы D-1 образуют панель изображения, в то время как фокусная точка находится focd (фокусное расстояние) вдоль последнего вектора.
Light(p:Point) - определяет точечный свет.
Renderer (
objects : list [ ObjectFace ],
cameras : list [ Camera ], # one for each dimension reduction
lights : list [ Light ],
img_range : float , # the maximum 2D coordinate in the 2D image
img_step : float # the resolution of the 2D image
)Группы объекты, камеры и свет и содержит логику, чтобы превратить 4D -сцену в 2D -изображение.
Пожалуйста, прочитайте подробные объяснения и справочную информацию в вики по адресу https://github.com/csirmaz/hypergeometry/wiki