ห้องสมุด Python เพื่อทำการจัดการทางเรขาคณิตของจุดและเวกเตอร์แบบหลายมิติโดยพลการและเครื่องมือ CGI เพื่อแสดงฉาก 4D เป็นภาพ 2D
main.py มีคำจำกัดความของฉาก 4D ที่เรียบง่ายและรหัสเพื่อแสดงผลเป็นภาพ 2D
Point(list[float]) - จุดหรือเวกเตอร์
Poly(list[list[float]]) - คอลเลกชันของคะแนนหรือเวกเตอร์
Span(org:Point, basis:Poly) - basis หรือเฟรมของเวกเตอร์ที่ยึดที่จุดเฉพาะ ( org ) ในอวกาศ สามารถเป็นตัวแทนของพื้นที่ย่อยหรือ (ผ่านคลาสย่อย) parallelotope หรือ simplex
Body(org:Point, basis:Poly) - คลาสย่อยของช่วง มีการดำเนินการที่พบบ่อยกับ simplices และ parallelotopes
Simplex(org:Point, basis:Poly) - คลาสย่อยของร่างกาย simplex แบบ N-dimensions (การวางนัยทั่วไปของสามเหลี่ยมและ tetrahedron) ซึ่งเป็นคอลเลกชันของคะแนนรอบ org ตามแนวเวกเตอร์ใน basis ด้วยค่าสัมประสิทธิ์เชิงบวกที่มีผลรวมมากที่สุด 1
Parallelotope(org:Point, basis:Poly) - คลาสย่อยของร่างกาย parallelotope N-dimensional (การวางนัยทั่วไปของสี่เหลี่ยมด้านขนานและขนาน) ซึ่งเป็นคอลเลกชันของคะแนนรอบ org ตาม basis เวกเตอร์ตามค่าสัมประสิทธิ์ระหว่าง 0 ถึง 1
ObjectFace (
body : Simplex ,
normal : Point ,
color : ( R , G , B ),
surface : str
)ObjectFace Objects เป็นหน่วยการสร้างทิวทัศน์ของเรา เราทำงานกับรูปสามเหลี่ยม (simplex) ที่มีมิติหนึ่งที่ต่ำกว่ามิติของฉากดังนั้นในฉาก 4D เราทำงานกับใบหน้า 3 มิติที่ครอบคลุมพื้นผิวของวัตถุ 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
โปรดอ่านคำอธิบายโดยละเอียดและข้อมูลพื้นหลังใน wiki ที่ https://github.com/csirmaz/hypergeometry/wiki