From 8e3f47e3b76154da225ef5acda690d5e20454bf0 Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Sat, 13 Dec 2025 11:18:22 +0800 Subject: wip: matrix. --- _site/projects/matrix-digital-rain/index.html | 40 ++++++++++++++++----------- 1 file changed, 24 insertions(+), 16 deletions(-) (limited to '_site/projects/matrix-digital-rain') diff --git a/_site/projects/matrix-digital-rain/index.html b/_site/projects/matrix-digital-rain/index.html index b69ac2d..5c33db1 100644 --- a/_site/projects/matrix-digital-rain/index.html +++ b/_site/projects/matrix-digital-rain/index.html @@ -45,34 +45,42 @@
12 JANUARY 2024

“All I see is blonde, brunette, red head.” The iconic digital rain from The -Matrix, implemented in C, without dependencies (not even ncurses).

+Matrix implemented in C without dependencies (not even ncurses).

-

This project is a fork of Domsson’s beautiful Fakesteak. Use the following commands to compile -and run the program:

+

Overview

+ +

This is my fork of Domsson’s beautiful Fakesteak. As I was going through the fakesteak +code, I thought about what it might take to recreate the original rain from the +first Matrix movie without losing the program’s minimalism and elegance.

+ +

My version of the matrix has the following features:

+ + + +

As there are no dependencies, you can compile and run it however you want:

$ cc -O3 main.c -o matrix
 $ ./matrix
 
-

While I loved Domsson’s take on the -digital rain, what blew my mind was the minimalistic elegance of his code. As I -carefully examined it, I thought about what it might take to recreate the -original digital rain from the first Matrix movie with it. The challenge is -adding these features without destroying fakesteak’s elegance.

-

How does it work?

-

The matrix struct makes use of three 2D arrays to encode the Matrix: the -code array for 32-bit Unicode characters, the rgb array for 24-bit RGB -values of the character (foreground color), and the shade array for the -degree of transparency of the character to simulate the ghosting effect of old -monochrome displays. The dimensions of these arrays depend on the size of the -terminal screen. Each slot in the array corresponds to a cursor position on the -screen.

+

The matrix struct makes use of two 2D arrays to encode the Matrix: the code +array for 32-bit Unicode characters and the rgb array for RGB values of the +characters (foreground color). The dimensions of these arrays depend on the +size of the terminal window. Each slot in the array corresponds to a cursor +position on the screen.

The ghosting effect, which is arguably the crowning feature of my version, is implemented by carefully scaling and mixing the RGB channels:

-- cgit v1.2.3