Eine Python-Bibliothek, um geometrische Manipulationen willkürlich-Viel-dimensionaler Punkte und Vektoren sowie CGI-Tools zu machen, um eine 4D-Szene als 2D-Bild zu rendern.
main.py enthält die Definition einer einfachen 4D -Szene und Code, um sie in ein 2D -Bild zu machen.
Point(list[float]) - Ein Punkt oder Vektor
Poly(list[list[float]]) - Eine Sammlung von Punkten oder Vektoren
Span(org:Point, basis:Poly) - eine basis oder einen Rahmen von Vektoren, die an einem bestimmten Punkt ( org ) im Raum verankert sind. Kann einen Unterraum oder (über Unterklassen) ein Parallelotop oder einen Simplex darstellen.
Body(org:Point, basis:Poly) - Eine Unterklasse der Spannweite. Enthält Operationen, die Vereinfachungen und Parallelotopen gemeinsam sind.
Simplex(org:Point, basis:Poly) - Eine Unterklasse des Körpers. Ein n-dimensionales Simplex (Verallgemeinerung des Dreiecks und des Tetraeders), bei dem es sich um die Sammlung von Punkten um org entlang der Vektoren handelt, mit positiven Koeffizienten, deren Summe es höchstens 1 basis .
Parallelotope(org:Point, basis:Poly) - Eine Unterklasse des Körpers. Ein n-dimensionales Parallelotop (Verallgemeinerung des Parallelogramms und des Parallelepiped), das die Sammlung von Punkten rund um org entlang der Vektoren in basis mit Koeffizienten zwischen 0 und 1 ist.
ObjectFace (
body : Simplex ,
normal : Point ,
color : ( R , G , B ),
surface : str
)ObjectFace -Objekte sind die Bausteine unserer Landschaft. Wir arbeiten mit dreieckigen (simplex) Gesichtern, die eine Dimension unter der Dimension der Szene sind. In einer 4D -Szene arbeiten wir mit 3D -Gesichtern, die die Oberflächen der 4D -Objekte abdecken. Die Gesichter müssen auch ausgerichtet sein, sodass wir ihren normalen Vektor sowie ihre Farbe und den Typ ihrer Oberfläche speichern, der die Berechnung für Beleuchtungseffekte bestimmt (z. B. matt, durchscheinend usw.)
Camera(space:Span, focd:float) - Definiert eine Kamera. Eine Kamera wird durch eine Spanne definiert, die den gesamten Raum mit einer orthonormalen Basis erstreckt. Die ersten D-1-Vektoren bilden den Bildbereich, während der Brennpunkt entlang des letzten Vektors focd (Fokusabstand) enthält.
Light(p:Point) - definiert ein Punktlicht.
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
)Gruppiert Objekte, Kameras und Lichter und enthält Logik, um eine 4D -Szene in ein 2D -Bild zu machen.
Bitte lesen Sie detaillierte Erklärungen und Hintergrundinformationen im Wiki unter https://github.com/cSirmaz/hypergeometry/wiki