4Dシーンを2D画像としてレンダリングするための任意の多次元ポイントとベクトルの幾何学的な操作を行うPythonライブラリを行う。
main.pyは、単純な4Dシーンとコードの定義が含まれており、2D画像にレンダリングします。
Point(list[float]) - ポイントまたはベクトル
Poly(list[list[float]]) - ポイントまたはベクトルのコレクション
Span(org:Point, basis:Poly) - 空間の特定のポイント( org )に固定されたベクトルのbasisまたはフレーム。サブスペースを表すことができます。または(サブクラスを介して)ParalleltopeまたはSimplexを表します。
Body(org:Point, basis:Poly) - スパンのサブクラス。シンプルとパラレルトープに共通する操作が含まれています。
Simplex(org:Point, basis:Poly) - ボディのサブクラス。 n次元のシンプレックス(三角形と四面体の一般化)は、最大1で合計する正の係数を持つbasisに沿ったorg周辺のポイントの収集です。
Parallelotope(org:Point, basis:Poly) - ボディのサブクラス。 0から1の係数を持つベクトルに沿ったorg周辺のポイントのbasisであるn次元の平行線(平行四辺形と平行標識の一般化)。
ObjectFace (
body : Simplex ,
normal : Point ,
color : ( R , G , B ),
surface : str
)オブジェクトフェイスオブジェクトは、私たちの景色の構成要素です。シーンの寸法よりも1つの次元である三角形(シンプレックス)の顔を使用して作業しているため、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で詳細な説明と背景情報を読んでください