Perpustakaan Python untuk melakukan manipulasi geometris dari titik dan vektor banyak dimensi, dan alat CGI untuk membuat adegan 4D sebagai gambar 2D.
main.py berisi definisi adegan 4D sederhana dan kode untuk membuatnya menjadi gambar 2D.
Point(list[float]) - titik atau vektor
Poly(list[list[float]]) - kumpulan titik atau vektor
Span(org:Point, basis:Poly) - basis atau bingkai vektor berlabuh pada titik tertentu ( org ) di ruang angkasa. Dapat mewakili subruang, atau (melalui subkelas) paralelotop atau simpleks.
Body(org:Point, basis:Poly) - subkelas rentang. Berisi operasi yang umum untuk penyederhanaan dan paralelotop.
Simplex(org:Point, basis:Poly) - subclass tubuh. Simplex n-dimensi (generalisasi segitiga dan tetrahedron) yang merupakan kumpulan titik di sekitar org di sepanjang vektor secara basis dengan koefisien positif yang jumlahnya paling banyak 1.
Parallelotope(org:Point, basis:Poly) - subclass tubuh. Paralelotop N-dimensi (generalisasi jajaran genjang dan paralelepiped) yang merupakan kumpulan titik di sekitar org di sepanjang vektor secara basis dengan koefisien antara 0 dan 1.
ObjectFace (
body : Simplex ,
normal : Point ,
color : ( R , G , B ),
surface : str
)Objectface Objects adalah blok bangunan pemandangan kami. Kami bekerja dengan wajah segitiga (simpleks) yang merupakan satu dimensi lebih rendah dari dimensi pemandangan, jadi dalam adegan 4D, kami bekerja dengan wajah 3D yang menutupi permukaan objek 4D. Wajah juga perlu berorientasi, jadi kami menyimpan vektor normal mereka, serta warnanya, dan jenis permukaannya yang menentukan perhitungan yang digunakan untuk efek pencahayaan (misalnya matte, tembus cahaya, dll.)
Camera(space:Span, focd:float) - Menentukan kamera. Kamera ditentukan oleh rentang yang rentang seluruh ruang dengan basis ortonormal. Vektor D-1 pertama membentuk panel gambar, sedangkan titik fokus adalah focd (jarak fokus) di sepanjang vektor terakhir.
Light(p:Point) - mendefinisikan cahaya titik.
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
)Mengelompokkan objek, kamera, dan lampu dan berisi logika untuk membuat adegan 4D ke dalam gambar 2D.
Silakan baca penjelasan terperinci dan info latar belakang di wiki di https://github.com/csirmaz/hypergeometry/wiki