Ray Tracing From Scratch in Python
<p>In this post I will give you a glimpse of what computer graphics algorithms may look like. I will explain the <em>ray tracing</em> algorithm and show a simple implementation in Python.</p>
<p>By the end of this article you’ll be able to make a program that will generate the above image, without making use of any fancy graphic library! Only <em>NumPy</em>. Isn’t it crazy?! Let’s dive in!</p>
<p><em>P.S. This article is by no mean a complete guide / explanation of ray tracing, since this is such a vast subject, but rather an introduction for curious people :)</em></p>
<h1>Prerequisites</h1>
<p>We only need very basic vector geometry.</p>
<ul>
<li>If you have 2 points A and B — whatever the dimensionality: 1, 2, 3, …, n — then a vector that goes from <code>A</code> to <code>B</code> can be found by computing <code>B — A</code> (element-wise);</li>
<li>The length of a vector — whatever the dimensionality — can be found by computing the square root of the sum of the squared components. The length of a vector <code>v</code> is denoted <code>||v||</code>;</li>
<li>A <em>unit-vector</em> is a vector of length 1: <code>||v|| = 1</code>;</li>
<li>Given a vector, another vector that points to the same direction but with a length of 1 can be found by dividing each component of the first vector by its length — this is called normalization: <code>u = v / ||v||</code>;</li>
<li>Dot product for vectors. Specifically: <code><v, v> = ||v||²</code>;</li>
<li>Solving a quadratic equation;</li>
<li>A bit of patience and imagination;</li>
</ul>
<p><a href="https://omaraflak.medium.com/ray-tracing-from-scratch-in-python-41670e6a96f9"><strong>Read More</strong></a></p>