# 3D engine for visualizing linear transformations and their decompositions

**URL:** <https://discourse.julialang.org/t/3d-engine-for-visualizing-linear-transformations-and-their-decompositions/136631>\
**Category:** Offtopic\
**Tags:** visualization, linear-algebra\
**Created:** [April 9, 2026, 12:48am UTC](https://discourse.julialang.org/t/3d-engine-for-visualizing-linear-transformations-and-their-decompositions/136631 "2026-04-09T00:48:57Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![GraphMath](https://avatars.discourse-cdn.com/v4/letter/g/8dc957/32.png) [@GraphMath](https://discourse.julialang.org/u/GraphMath)\
**Post date:** [April 9, 2026, 12:48am UTC](https://discourse.julialang.org/t/3d-engine-for-visualizing-linear-transformations-and-their-decompositions/136631/1 "2026-04-09T00:48:57Z")

</div>

We built a 3D visualization engine to represent linear transformations in ℝ³ as compositions of simpler transformations.

In this example, A = QR

Image shows deformation followed by rigid motion.

 ![qr-3d-visualization](https://global.discourse-cdn.com/julialang/original/3X/f/1/f11c4c767d1cd3cbb9cb9bb640d23af473a97afd.png)  
Can generate additional decompositions for specific numerical examples if useful.

---

<div class="post-metadata">

**Author:** ![Olivier\_Merchiers](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/olivier_merchiers/32/4073_2.png) [@Olivier\_Merchiers](https://discourse.julialang.org/u/Olivier_Merchiers)\
**Post date:** [April 9, 2026, 7:01am UTC](https://discourse.julialang.org/t/3d-engine-for-visualizing-linear-transformations-and-their-decompositions/136631/2 "2026-04-09T07:01:58Z")

</div>

Hi and welcome!  
This looks very nice.  
Could you share the code?  
Best

---

<div class="post-metadata">

**Author:** ![GraphMath](https://avatars.discourse-cdn.com/v4/letter/g/8dc957/32.png) [@GraphMath](https://discourse.julialang.org/u/GraphMath)\
**Post date:** [April 10, 2026, 3:13am UTC](https://discourse.julialang.org/t/3d-engine-for-visualizing-linear-transformations-and-their-decompositions/136631/3 "2026-04-10T03:13:18Z")

</div>

Dear Olivier,

Thanks for noticing our work!

The code that generates these visuals is written entirely in Swift. It is also not well polished, as it was created for a personal project a few years ago by one of us (Eteri) as she was learning programming and 3D graphics.

The engine “lives” in our old iOS app, Matrix Solver Step-by-step, and will be incorporated into our newer iOS and macOS app, Linear Algebra World. We also use this engine, together with others, to illustrate Wikipedia articles.

We are happy to share the code and can gladly explain verbally how the drawing logic is written. If you do end up adapting it or using the visuals in your own projects, we just ask for a simple attribution to our names or our app.

We’d also be interested to hear about your work and interests, if you are open to sharing!

One thought: what do you think about making a joint GitHub project out of this?

We could set it up with a simple open-source license to handle basic attribution, making it easy to collaborate and use.

Best, Eteri Byazrova and Yuri Morozov

---

<div class="post-metadata">

**Author:** ![GraphMath](https://avatars.discourse-cdn.com/v4/letter/g/8dc957/32.png) [@GraphMath](https://discourse.julialang.org/u/GraphMath)\
**Post date:** [April 10, 2026, 3:14am UTC](https://discourse.julialang.org/t/3d-engine-for-visualizing-linear-transformations-and-their-decompositions/136631/4 "2026-04-10T03:14:39Z")

</div>

another sample,

 ![Header_02](https://global.discourse-cdn.com/julialang/original/3X/e/5/e5861c6a31333a88bee3f515f86549f96e9a60c1.jpeg)

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [April 10, 2026, 8:24am UTC](https://discourse.julialang.org/t/3d-engine-for-visualizing-linear-transformations-and-their-decompositions/136631/5 "2026-04-10T08:24:11Z")

</div>

Nice, but why is this posted in the Julia Discourse if it is implemented in Swift? Should this thead be moved to off-topic?

Notice that similiar visualization should be easy to build with less than 20 lines of Meshes.jl code. Create a `Box` and apply the `Affine` transform with diffferent matrices before calling `viz` in various Makie.jl subplots.

---

<div class="post-metadata">

**Author:** ![GraphMath](https://avatars.discourse-cdn.com/v4/letter/g/8dc957/32.png) [@GraphMath](https://discourse.julialang.org/u/GraphMath)\
**Post date:** [April 10, 2026, 10:52am UTC](https://discourse.julialang.org/t/3d-engine-for-visualizing-linear-transformations-and-their-decompositions/136631/6 "2026-04-10T10:52:48Z")

</div>

Note taken  
Apologies for not knowing platform scope  
Tried to move to off topic  
AI says I do not have the privileges

---

<div class="post-metadata">

**Author:** ![GraphMath](https://avatars.discourse-cdn.com/v4/letter/g/8dc957/32.png) [@GraphMath](https://discourse.julialang.org/u/GraphMath)\
**Post date:** [April 10, 2026, 12:08pm UTC](https://discourse.julialang.org/t/3d-engine-for-visualizing-linear-transformations-and-their-decompositions/136631/7 "2026-04-10T12:08:42Z")

</div>

Thanks for the friendly welcome and for clarifying the forum scope.

I work in Swift, and my intent here was to share the mathematical side of the work.  
I’ll be fully aware of the forum guidelines from now on and will post as off topic
