一個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中的詳細說明和背景信息