グラフィックとレンダリング
このリポジトリのスナップショットには、現在 Sounio には二つの実際のグラフィックファミリーがあります。
examples/graphics/ では終端機上の科学表示を、examples/render/ ではソフトウェアラスタライズされた画像出力を提供しています。
以下のラスタプレビューは、確認された JIT アートファクトの正確な標準出力から生成され、それをウェブサイトに SVG アセットとしてコミットしています。このページは、二つの離れたサンプルの代わりに、今は実際の 5 つのラスタプレビューを提供しています。
実際のレイター出力
この例は実際のバリセントレーターです。公開ページの画像はコンパイラ出力から生成されています,手描きのモックアップではありません。
Source: examples/render/triangle_basic.sio
bin/souc run examples/render/triangle_basic.sio > triangle_basic.ppm この例は回転されたキューブを描画し、辺を深さによって色付けし、Sounioコードから直接ポータブルなPPMフレームを出力します。
Source: examples/render/cube_wireframe.sio
bin/souc run examples/render/cube_wireframe.sio > cube_wireframe.ppm (前回のセクションから続いて)
このプレビューは型付き不確実性を実際の認識論的領域に変換しています:値はx軸に沿って走り、epsilonはy軸に沿って走り、明るさは不確実性が高くなると落ちます。
Source: examples/render/uncertainty_field.sio
bin/souc run examples/render/uncertainty_field.sio > uncertainty_field.ppm (前回のセクションから続いて)
このレンダーは、do(X)-スタイルの干済色付けと明示的な潜在の伴隨者を含むフロントドアスタイルのグラフを直接ピクセルでエンコードします。
Source: examples/render/causal_dag.sio
bin/souc run examples/render/causal_dag.sio > causal_dag.ppm このシーンは四つ面体をクイータニョン数学で回転させ、両方の姿を画面空間に投影し、元のと回転された頂点間の対応線を重ねて表示します。
Source: examples/render/quaternion_rotation.sio
bin/souc run examples/render/quaternion_rotation.sio > quaternion_rotation.ppm このグラフィックススタックの理由
- 実コンパイラ出力:上に示されたラスターセクションは、チェックされた
souc run出力から生成されています。画面スクリーンショットではなくです。 - 転送可能な出力形式:ターミナルデモは Unicode/ANSI を使用し、ラスターデモは純粋な PPM を出力します。
- ウィンドウ依存性なし:現在の例では、X11、OpenGL または GUI ツールキットの依存性はありません。
- SSH フレンドリー:ターミナルとファイルベースのレンダリングは、リモートシステムでも動作します。
ターミナルギャラリー
オクタオニョン乗算表
最高の瑰宝である、Fano平面構造がすぐに色のパターンを介して見える、完全に色付けされた8次元の代数の可視化です。
(前回のセクションから続いて)
╔══════════════════════════════════════════════════════════════════════════╗ ║ オクテオニョン乗算テーブル - カラー版 ║ ╚══════════════════════════════════════════════════════════════════════════╝ (前のセクションから続いています) × │ 1 i j k l il jl kl ────┼──────────────────────────────────────────────── 1 │ 1 i j k l il jl kl i │ i -1 k -j il -l -kl jl j │ j -k -1 i jl kl -l -il k │ k j -i -1 kl -jl il -l l │ l -il -jl -kl -1 i j k il │ il l -kl jl -i -1 -k j jl │ jl kl l -il -j k -1 -i kl │ kl -jl il l -k -j i -1 説明:1=実数 ijk=四次元数 liljlkl=八次元数 dim=負数
/>
fMRI脳活性熱図
32×32の脳切れをグラデーン強度でUnicodeブロック文字で可視化する。
(前回のセクションから続いて)
╔═══════════════════════════════════════════════════╗ ║ fMRI BRAIN ACTIVATION - Slice z=32 ║ ╚═══════════════════════════════════════════════════╝
(前回のセクションから続いています)
前 ░░░░░░░░░░░░░░░░░░░ ░░░░░░▒▒▒▒▒▒▒▒░░░░░░░░ ░░░░▒▒████████▒▒░░░░ ░░░▒▒██████████████▒▒░░░ ░░░▒▒███████████████████▒▒░░░ L ░░▒▒███████░░░░███████▒▒░░ R ░░▒▒███████░░░░░░███████▒▒░░ ░░▒▒████████░░████████▒▒░░ ░░░▒▒███████████████▒▒░░░ ░░░░▒▒▒███████▒▒▒░░░░ ░░░░░░▒▒▒▒▒▒▒▒░░░░░░░░ ░░░░░░░░░░░░░░░░░░░ 後ろ
(前回のセクションから続いています)
強度: ░=0.0 ▒=0.3 █=0.6 █=1.0 領域: 視覚 モーター 前額葉`} />
3D Wireframe Cube
回転した正方体の等角投影と軸の示す指标。
(前のセクションから続いています)
╔═══════════════════════════════════════════════════╗ ║ 3D ウィアフレーム キューブ - フレーム 42 ║ ╚═══════════════════════════════════════════════════╝
(前のセクションから続いています)
Y │ ┌───────────┐ ╱│ ╱│ ╱ │ ╱ │ ╱ │ ╱ │ ┌───────────┐ │ │ │ │ │ │ └───────│───┘ │ ╱ │ ╱ │ ╱ │ ╱ │╱ │╱ └───────────┘──────X ╱ Z
(前のセクションから続いています)
投影: 等角(30°) 軸: X=赤 Y=緑 Z=青`} />
パーティクルシステムアニメーション
重力とドラッグ力を伴う物理基づきのパーティクルの噴出。
(前回から続いています)
╔═══════════════════════════════════════════════════╗ ║ パーティクルフォンテイン - フレーム 120 ║ ╚═══════════════════════════════════════════════════╝
(前回から続いています)
★ ★ ★ · · · ★ ★ · · · ○ · · ○ · · ○ ○ ○ ○ · │ · · │ · · │ · ════════════════════█════════════════════
パーティクル: 活性 847 物理:gravity=0.1,drag=0.99,wind=0.02 寿命:★=新 ·=中 ·=古い`} />
流体力学 (ナビエ・ストークス方程式)
ジョス・スタムの「安定した流れ」アルゴリズムに基づいた Smoke シミュレーション。
(前回から続いています)
╔═══════════════════════════════════════════════════╗ ║ 流体力学 - 喫煙 ║ ╚═══════════════════════════════════════════════════╝ ░░░░░░ ░░░░▒▒░░░░ ░░▒▒▓▓▒▒░░░░ ░░░▒▒██▓▓▒▒░░░░ ░░░░▒▒▓▓██▓▓▒▒░░░░ ░░▒▒▓▓███▓▓▒▒░░ ░░▒▒███▒▒░░ ▒▒███▒▒ ▓▓██▓▓ ████ ████ ▓▓▓▓ ░██░ ▀▀ ═══════════════════════════════════════════ (前のセクションから続きます) アルゴリズム:Stable Fluids (Stam 1999) グリッド:64×64、viscosity=0.0001
分岐図
ロジスティックマップでは、 period-doubling から混乱への级化を示しています。
(前のセクションから続いています)
╔═══════════════════════════════════════════════════╗ ║ ロジスティックマップの分岐 - 周期倍增 ║ ╚═══════════════════════════════════════════════════╝ x↑ 1│ ░░░░░░░░░░░░ │ ░░▒▒▒▒▒▒▒▒░░ │ ░░▒▒████████▒▒ │ ▒▒▒▒████████▒▒░ │ ▒▒▒▒ ████████ │ ▒▒▒▒ ████████ │ ▒▒▒▒ █ █ │ ░░░ █ █ │ ░░░░ │ ░░░░ │ ░░░░ 0│░░░░░ └──────────────────────────────────────────────→r 2.5 3.0 3.5 4.0 x_{n+1} = r × x_n × (1 - x_n) 示すことは:固定点 → 周期2 → 周期4 → 乱数
力導向グラフレイアウト
フラッチャーマン・リンゴルドのアルゴリズムを用いた社会ネットワークの可視化。
(前回から続き)
╔═══════════════════════════════════════════════════╗ ║ 力導きグラフ - ソーシャルネットワーク ║ ╚═══════════════════════════════════════════════════╝ (前回から続いています) (Bob)─────────(Eve) │╲ ╱│ │ ╲ ╱ │ │ ╲ ╱ │ │ ╲ ╱ │ │ ╲ ╱ │ │ ╲ ╱ │ │ ╲ ╱ │ (Alice)───(Carol) │ ╱ ╲ │ │ ╱ ╲ │ │ ╱ ╲ │ │ ╱ ╲ │ │ ╱ ╲ │ │ ╱ ╲ │ │╱ ╲│ (Dave)─────────(Frank) (前回から続き) ノード: 6 辺: 12 アルゴリズム: フルチャーマン・リンゴルド 温度: 0.05 (収束)
カルマンフィルタの確率分散
色付け付けされた確率レベルの順続的なベイズ推論更新。
(前回から続いています)
╔═══════════════════════════════════════════════════╗ ║ カルマンフィルタ - センサーフッジング ║ ╚═══════════════════════════════════════════════════╝ センサーフッジングを通じた不确定性の削減: 前 (σ=10.0m): ██████████████████████████████████████ 高 GPS後 (σ=4.5m): ███████████████ 中 IMU後 (σ=0.5m): ██ 低 LiDAR後 (σ=0.1m): ▏ 非常低 (前回から続き) 精度向上 (1/σ²): 事前: ▏ +GPS: █ +IMU: ████████ +LiDAR: ████████████████████████████████ 合計不確かさ減少: 99% 精度向上: 10,405×
╔═══════════════════════════════════════════════════╗ ║ CMIP6 気候予測 - SSP2-4.5 ║ ╚═══════════════════════════════════════════════════╝ 2100年の平均気温変動 (1850-1900年から): (前回から続き) GFDL-ESM4: █████████████████│ 1.8°C ± 0.2 HadGEM3: █████████████████████│ 2.1°C ± 0.3 MIROC6: ███████████████████│ 1.9°C ± 0.25 IPSL-CM6A: ███████████████████████│ 2.3°C ± 0.4 MPI-ESM: ████████████████████│ 2.0°C ± 0.1 ├─────────────────────────────────┤ 0 1.5°C 3.0°C (前回から続き) 集団平均: ████████████████████│ 2.02°C ± 0.18 ⚠ パリ 1.5°C 目標: 12% の確率で下回る可能性 ⚠ パリ 2.0°C 目標: 47% の確率で下回る可能性
例の実行方法
SOUC_BIN=bin/souc
レイヤーレンダリング (標準出力に PPM)
“$SOUC_BIN” run examples/render/triangle_basic.sio > triangle_basic.ppm “$SOUC_BIN” run examples/render/cube_wireframe.sio > cube_wireframe.ppm
科学図形表示
“$SOUC_BIN” run examples/visual/06_octonion_color_table.sio “$SOUC_BIN” run examples/visual/10_kalman_filter_color.sio “$SOUC_BIN” run examples/visual/12_animated_diffusion.sio
(前回のセクションから続いて)
グラフィックスライブラリのデモ
“$SOUC_BIN” run examples/graphics/demos/phase3_showcase.sio # 3D “$SOUC_BIN” run examples/graphics/demos/phase5_showcase.sio # アニメーション “$SOUC_BIN” run examples/graphics/demos/phase7_showcase.sio # ネットワーク
正確なコンパイラ出力からウェブサイトのレンダープレビューを更新
npm —prefix website run generate:render-assets
ライブラリ構造
このページでは、ライブラリの構造について説明します。この構造は、ライブラリの内部に含まれる各パッケージやモジュールの配置を示しています。
パッケージ
パッケージは、関連する関数やクラスを集めた単位です。これらは、ライブラリ全体の構造の中で最も基本的な単位です。
パッケージの構造
パッケージの構造は、以下のようになります。
/ ├── package1/ │ ├── file1.py │ └── file2.py ├── package2/ │ ├── file3.py │ └── file4.py └── package3/ ├── file5.py └── file6.py
この構造では、パッケージ1にはfile1.pyとfile2.pyが含まれ、パッケージ2にはfile3.pyとfile4.pyが含まれ、パッケージ3にはfile5.pyとfile6.pyが含まれています。
モジュール
モジュールは、パッケージ内に含まれる関数やクラスのグループです。これらは、パッケージ内で関連性の高い関数やクラスを集めたものです。
モジュールの構造
モジュールの構造は、以下のようになります。
/ ├── package1/ │ ├── module1.py │ ├── module2.py │ └── module3.py ├── package2/ │ ├── module4.py │ ├── module5.py │ └── module6.py └── package3/ ├── module7.py └── module8.py
この構造では、パッケージ1にはmodule1.py、module2.py、module3.pyが含まれ、パッケージ2にはmodule4.py、module5.py、module6.pyが含まれ、パッケージ3にはmodule7.py、module8.pyが含まれています。
関数とクラス
関数とクラスは、モジュール内に含まれる基本のコードブロックです。これらは、モジュール内で定義された関数やクラスです。
関数とクラスの構造
関数とクラスの構造は、以下のようになります。
/ ├── package1/ │ ├── module1.py │ ├── module2.py │ └── module3.py │ ├── function1.py │ └── class1.py ├── package2/ │ ├── module4.py │ ├── module5.py │ └── module6.py │ ├── function2.py │ └── class2.py └── package3/ ├── module7.py └── module8.py ├── function3.py └── class3.py
この構造では、パッケージ1のモジュール1にはfunction1.pyとclass1.pyが含まれ、パッケージ2のモジュール4にはfunction2.pyとclass2.pyが含まれ、パッケージ3のモジュール7にはfunction3.pyとclass3.pyが含まれています。
このような構造を持つライブラリの中で、関数やクラスを利用することができます。これにより、コードの再利用性が向上し、ライブラリの整體構造が明確になります。
(前回から続き)
| フェーズ | モジュール | 機能 |
|---|---|---|
| フェーズ1 | canvas, colors, drawing, text | 基本的なプリミティブ、ANSI色、形 |
| フェーズ2 | axes, scatter, line_plot, bar_chart, histogram, heatmap | 2次元グラフ |
| フェーズ3 | projection, wireframe, scatter3d | 3次元可視化 |
| フェーズ4 | input, interactive_plot | ズーム、パン、マウス/キーボード |
| フェーズ5 | animation, particle_system, fluid_sim | アニメーション、物理 |
| フェーズ6 | phase_diagram, bifurcation, poincare, streamlines | 科学グラフ |
| フェーズ7 | graph, force_directed, tree_layout, graph_render | ネットワーク可視化 |
(前回のセクションから続いています)
開始する
フェーズのデモを表示する
bin/souc run examples/graphics/demos/phase1_showcase.sio