diff options
Diffstat (limited to '_site/projects/matrix-digital-rain/index.html')
| -rw-r--r-- | _site/projects/matrix-digital-rain/index.html | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/_site/projects/matrix-digital-rain/index.html b/_site/projects/matrix-digital-rain/index.html index 3c441d4..5218c10 100644 --- a/_site/projects/matrix-digital-rain/index.html +++ b/_site/projects/matrix-digital-rain/index.html @@ -53,15 +53,15 @@ Matrix in C, with zero dependencies—not even ncurses.</p> <h2 id="overview">Overview</h2> -<p>This is my fork of Domsson’s beautiful <a href="https://github.com/domsson/fakesteak" class="external" target="_blank" rel="noopener noreferrer">Fakesteak</a>. While studying the code, I wondered -what it would take to faithfully recreate the original Matrix from the first -movie without sacrificing the program’s minimalism and elegance.</p> +<p>This is my fork of Domsson’s beautiful <a href="https://github.com/domsson/fakesteak" class="external" target="_blank" rel="noopener noreferrer">Fakesteak</a>. While going through his code, I +wondered what it would take to faithfully recreate the original Matrix from the +first movie without sacrificing its minimalism.</p> -<p>My version adds:</p> +<p>My implementation supports:</p> <ul> - <li>Unicode character support.</li> - <li>Fully customizable 24-bit RGB (truecolor) colors.</li> + <li>Unicode characters.</li> + <li>24-bit RGB colors (truecolor).</li> <li>Glitches in the matrix.</li> <li>Ghosting effect of old monochrome CRT displays.</li> <li>Closely resembles the Matrix seen in the background during Neo and Cypher’s @@ -76,10 +76,10 @@ $ ./matrix <h2 id="how-does-it-work">How does it work?</h2> -<p>The program tracks the state of the terminal - characters, background and -foreground colors, shading levels, cursor position - using multiple internal -data buffers. On each frame, it updates these buffers and repaints the screen -using ANSI escape codes:</p> +<p>The program tracks the state of the terminal, such as code points, background +and foreground colors, and cursor position, using multiple internal data +buffers. On each frame, it updates these buffers and repaints the screen using +ANSI escape codes:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>static void term_print(const matrix *mat, size_t row, size_t col) { @@ -94,8 +94,8 @@ using ANSI escape codes:</p> } </code></pre></div></div> -<p>The ghosting effect, the signature feature of this implementation, works by -scaling and mixing the RGB channels:</p> +<p>The ghosting effect is achieved by carefully scaling the RGB +channels before mixing them:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>static void mat_shade(matrix *mat, size_t row, size_t col) { @@ -107,25 +107,24 @@ scaling and mixing the RGB channels:</p> } </code></pre></div></div> -<p>The ghosting function emulates the screen decay by gradually transitioning each -raindrop’s color towards the background color. This approach provides two key -benefits: straightforward color configuration that integrates naturally with -Unix ricing (desktop customization) and high-fidelity recreation of the Matrix -aesthetic.</p> +<p>The ghosting function emulates the dim after glow by gradually transitioning +each raindrop’s color towards the background color. This approach provides two +key benefits: straightforward color configuration that integrates naturally +with (Unix) ricing and high-fidelity recreation of the Matrix aesthetic.</p> <h2 id="customization">Customization</h2> -<p>While you can adjust almost every aspect, including its speed, glitch -frequency, and rain density, the most useful settings for customization are the -color scheme and character set.</p> +<p>While you can alter almost every aspect, including speed, glitch frequency, and +rain density, the most common customizations are the color scheme and character +set.</p> <p>There are three color settings: head, tail, and background. You can configure -them by setting the <code class="language-plaintext highlighter-rouge">COLOR_*_RED</code>, <code class="language-plaintext highlighter-rouge">COLOR_*_GRN</code>, and <code class="language-plaintext highlighter-rouge">COLOR_*_BLU</code> definitions -in main.c.</p> +them using <code class="language-plaintext highlighter-rouge">COLOR_*_RED</code>, <code class="language-plaintext highlighter-rouge">COLOR_*_GRN</code>, and <code class="language-plaintext highlighter-rouge">COLOR_*_BLU</code> definitions found in +main.c.</p> <p>The <code class="language-plaintext highlighter-rouge">UNICODE_MIN</code> and <code class="language-plaintext highlighter-rouge">UNICODE_MAX</code> values control the Unicode block used. For -example, setting them to <code class="language-plaintext highlighter-rouge">0x30A1</code> and <code class="language-plaintext highlighter-rouge">0x30F6</code> rains Katakana (if a font that -supports Katakana is present on the system):</p> +example, setting them to <code class="language-plaintext highlighter-rouge">0x30A1</code> and <code class="language-plaintext highlighter-rouge">0x30F6</code> rains Katakana, if a font that +supports Katakana is present on the system:</p> <p><img style="width: 100%;" src="katakana.png" /></p> |
