一个python库,用于对任意数量的点和向量进行几何操作,以及CGI工具将4D场景作为2D图像渲染。
main.py包含一个简单的4D场景和代码的定义,将其渲染到2D图像中。
Point(list[float]) - 点或向量
Poly(list[list[float]]) - 点或向量的集合
Span(org:Point, basis:Poly) - 锚定在空间中特定点( org )的向量的basis或框架。可以代表子空间,也可以(通过子类)并行托管或单纯形。
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场景中,我们使用覆盖4D对象表面的3D脸。这些面也需要定向,因此我们存储它们的正常矢量及其颜色,以及确定用于照明效果的计算的表面类型(例如哑光,半透明等)
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上阅读Wiki中的详细说明和背景信息