Skip to content

divyanshailani/LA-Visual-Engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌌 Linear Algebra Visual Engine

Project 01 — 2D Linear Transformation Animator

"Watch space bend, rotate, shear and collapse in real time."

Python NumPy Blender Status License


🎬 Phase 2 — Blender bpy Cinematic Renders

1920×1080 · 60fps · EEVEE · Emission Shaders · Geometry Nodes · Shape Key Animation

Rotation 90° Shear Scale 2x
rotation shear scale
det = 1 · area preserved det = 1 · grid slides det = 4 · area ×4
det = 0 Collapse Reflection x det < 0 Flip Projection x
collapse reflection flip projection
Space folds to a line det = -1 · mirrors det = -1 · flips det = 0 · collapses to axis

🎬 Phase 1 — Python + Matplotlib Preview

Rotation 90° Shear Scale 2x
rotation shear scale
det = 0 Collapse Identity
collapse identity

🧠 What This Proves

This is not a tutorial project. Every line of code here visually proves a concept from linear algebra — the same concepts that power every AI model, graphics engine, and physics simulation on the planet.

Concept What You See
Basis vectors î ĵ Red + teal arrows morphing live with the grid
Matrix × vector Every point in 2D space multiplied by M
Linear transformation Grid morphing smoothly from identity → M
det(M) as area scale Grid stretches/shrinks by exactly det(M)
det = 0 collapse Space folds into a line — no inverse exists
det < 0 flip Orientation inverts — space turns inside out
Composition M₂M₁ Two transforms chained, proves det(M₂M₁) = det(M₂)·det(M₁)

🏗️ Build System — 2 Phases

Phase 1 → Python + NumPy + Matplotlib    ✅ Complete
   Prove the math works. Pure logic. Runs in terminal.

Phase 2 → Blender 5 + bpy               ✅ Complete
   Same math. GPU-rendered cinematic dark void.
   Shape Keys + Geometry Nodes + EEVEE + 1080p 60fps.

📁 Project Structure

LA-Visual-Engine/
│
├── 📄 README.md
├── 📄 requirements.txt
├── 📄 LICENSE
│
├── 🐍 Phase_1_Logic/
│   ├── matrices.py           ← All 8 transformation matrices + presets dict
│   ├── math_utils.py         ← lerp, compose, det_status, verify_composition
│   └── preview.py            ← Matplotlib CLI animator — run this
│
├── 🎨 Phase_2_Blender/
│   ├── scenes/
│   │   └── transform.py      ← Entry point — change PRESET_NAME and run
│   └── utils/
│       ├── materials.py      ← Emission shader system
│       ├── scene_builder.py  ← Grid, arrows, camera, Geometry Nodes thickness
│       └── animator.py       ← Shape Key animation + Blender 5.0 interpolation
│
└── 📸 docs/assets/
    ├── phase2_renders/       ← 7 Blender cinematic renders (GIF)
    └── *.gif                 ← Phase 1 Matplotlib previews

🚀 Quick Start

Phase 1 — Python Logic

pip3 install -r requirements.txt
cd Phase_1_Logic
python3 preview.py

Phase 2 — Blender Cinematic

1. Open Blender 5.x
2. Scripting tab → Open → Phase_2_Blender/scenes/transform.py
3. Set PRESET_NAME = "shear"  (or any of the 8 presets)
4. ▶ Run Script
5. Render → Render Animation  (Ctrl+F12)

8 presets available:

identity       → No change          det =  1
rotation_90    → Rotate 90°         det =  1  (area preserved)
shear          → Horizontal shear   det =  1  (area preserved)
scale2x        → Scale 2x           det =  4  (area ×4)
reflection_x   → Reflect over x     det = -1  (orientation flips)
projection_x   → Project to x-axis  det =  0  (collapse!)
det_0_collapse → Space collapses    det =  0
det_neg_flip   → Orientation flip   det = -1

✅ Verification

A successful Phase 1 run should:

  • print the available preset list in the terminal
  • open a Matplotlib window after you choose a preset like shear or rotation_90
  • animate the grid and basis vectors from identity to the selected matrix
  • update the chart title with determinant status as the animation progresses

🔬 The Linear Algebra Explained

What is a Linear Transformation?

[a  b] [x]   [ax + by]
[c  d] [y] = [cx + dy]

Every point in the grid moves — lines stay parallel, origin stays fixed.

Why does det(M) matter?

det = 1   →  Area unchanged    (rotation, reflection)
det = 4   →  Area ×4           (scale 2x in both directions)
det = 0   →  Area = 0          (space collapsed — no inverse!)
det < 0   →  Orientation flip  (space turns inside out)

The composition rule

M_total = M₂ · M₁     (order matters — NOT commutative)
det(M₂ · M₁) = det(M₂) × det(M₁)

📐 Part of the Simulation Architect Path — 10 Projects Total

# Project Core Concept Status
01 2D Linear Transform Animatorhere Vectors, Det, Basis ✅ Both phases done
02 Coordinate System Translator Change of Basis ✅ Both phases done
03 Geometric Linear System Solver Cramer's Rule ✅ Both phases done
04 Eigenvector Explorer Eigenvalues, Stable Axes ✅ Both phases done
05A Solar System Simulator Real Physics + NASA JPL API
05B PROJECT VOID Non-Uniform Gravity + Custom A*
06 Neural Network Visual Simulator Backprop, PyTorch
07 Optical Fiber & Internet Simulator Wave Physics
08 VOID AI — RL Navigator Gymnasium + SB3
09 Omniverse Digital Twin OpenUSD + NVIDIA Omniverse

🧰 Tech Stack

Tool Purpose
Python 3.12+ Core language
NumPy Matrix operations, vector math, LA engine
Matplotlib Phase 1 — 2D visualization
Blender 5 + bpy Phase 2 — 3D GPU-rendered cinematic
Geometry Nodes Procedural 3D tube generation from math lines
Shape Keys Crash-proof vertex animation in Blender
Taichi Lang GPU physics (from Project 05A onwards)
PyTorch Neural networks + RL (Projects 06, 08)
NVIDIA Omniverse Endgame simulation platform (Project 09)

👨‍💻 Author

Divyansh Ailani — Simulation Architect in progress

BCA Student · Kanpur, India → The World

"Mathematics is the language of the universe. I am learning to read it."

LinkedIn GitHub


Part of the Simulation Architect Path — from linear algebra to NVIDIA Omniverse. 🌌

About

Linear Algebra Visual Engine — Proving every LA concept by building it. Python + NumPy + Blender bpy. Project 01 of 9 on the path to NVIDIA Omniverse.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages