Zum Hauptinhalt springen
Echtzeit-Radar & Feeds
Alle RSS Feeds ➔
👥 Community & Social
••••
Sicherheitslücken (CVE)CVE-2026-20786 | Intel NPU Driver out-of-bounds (Nessus ID 335912)(29.09.2026 um 05:01 Uhr)
••••••••••
Sicherheitslücken (CVE)CVE-2026-20786 | Intel NPU Driver out-of-bounds (Nessus ID 335912)(29.09.2026 um 05:01 Uhr)
••••••
Intelligence View
⚡ tsecurity.de Intelligence

Explaining donut like 5 years old Part-4 (Last)

The complete code for C is #include <math.h> #include <stdio.h> #include <string.h> #include <unistd.h> typedef struct { double a1; double a2; double a3; } singleRow; typedef struct { …

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!




The complete code for C is






#include <math.h>
#include
<stdio.h>
#include
<string.h>
#include
<unistd.h>

typedef struct {
double a1;
double a2;
double a3;
} singleRow;

typedef struct {
singleRow a1;
singleRow a2;
singleRow a3;
} Matrix;

singleRow multiply(singleRow m1, Matrix m2) {
singleRow res;
res.a1 = m1.a1 * m2.a1.a1 + m1.a2 * m2.a2.a1 + m1.a3 * m2.a3.a1;
res.a2 = m1.a1 * m2.a1.a2 + m1.a2 * m2.a2.a2 + m1.a3 * m2.a3.a2;
res.a3 = m1.a1 * m2.a1.a3 + m1.a2 * m2.a2.a3 + m1.a3 * m2.a3.a3;
return res;
}

int main() {
int screen_width = 80, height = 22;
char buffer[1760];
float zBuffer[1760];
float A = 0, B = 0;
int R2 = 2, R1 = 1;
printf("\x1b[2J");
while (1) {
memset(buffer, ' ', 1760);
memset(zBuffer, 0, 7040);
for (float theta = 0; theta < 6.28; theta += 0.07) {
for (float phi = 0; phi < 6.28; phi += 0.02) {
singleRow circle = {2 + cos(theta), sin(theta), 0};
// rotation on Y-axis
Matrix Ry = {{cos(phi), 0, sin(phi)}, {0, 1, 0}, {-sin(phi), 0, cos(phi)}};
// rotation on X-axis
Matrix Rx = {{1, 0, 0}, {0, cos(A), sin(A)}, {0, -sin(A), cos(A)}};
// rotation on Z-axis
Matrix Rz = {{cos(B), sin(B), 0}, {-sin(B), cos(B), 0}, {0, 0, 1}};

singleRow donut = multiply(circle, Ry);
singleRow rotateX = multiply(donut, Rx);
// We will consider it as [Nx, Ny, Nz]
singleRow spinningDonut = multiply(rotateX, Rz);
float reciNz = 1 / (spinningDonut.a3 + 5);

int x = 40 + 30 * spinningDonut.a1 * reciNz;
int y = 12 + 15 * spinningDonut.a2 * reciNz;

// o is index of current buffer
int o = x + screen_width * y;

int L = 8 * (spinningDonut.a2 - spinningDonut.a3 + 2 * cos(B) * sin(A) * sin(phi)
- 2 * cos(phi) * cos(theta) * sin(B)
- 2 * cos(phi) * sin(B)
+ 2 * cos(A) * sin(phi)
);

// donut luminicity will be seen by these characters
// these 12
char charOut[] = ".,-~:;=!*#$@";

if (x < screen_width && y < height && zBuffer[o] < reciNz) {
zBuffer[o] = reciNz;
// If L < 0, . will be buffer
buffer[o] = charOut[L > 0 ? L : 0];
}
}
}
// Clear screen
printf("\x1b[H");
for (int i = 0; i <1761; i++) {
// On every 80th character, new line will be printed
// If there's a reminder then buffer printed
putchar(i % 80 ? buffer[i] : 10);
A += 0.00004;
B += 0.00002;
}
// Timer to slow down speed a bit
usleep(10000);
}
return 0;
}









The complete code for Java is






import java.util.Arrays;

class singleRow {
public double a1;
public double a2;
public double a3;
public singleRow(double a1, double a2, double a3) {
this.a1 = a1;
this.a2 = a2;
this.a3 = a3;
}
}
class Matrix {
public singleRow a1;
public singleRow a2;
public singleRow a3;
public Matrix(singleRow a1, singleRow a2, singleRow a3) {
this.a1 = new singleRow(a1.a1, a1.a2, a1.a3);
this.a2 = new singleRow(a2.a1, a2.a2, a2.a3);
this.a3 = new singleRow(a3.a1, a3.a2, a3.a3);
}
public static singleRow multiply(singleRow m1, Matrix m2) {
singleRow res = new singleRow(0, 0, 0);
res.a1 = (m1.a1 * m2.a1.a1) + (m1.a2 * m2.a2.a1) + (m1.a3 * m2.a3.a1);
res.a2 = (m1.a1 * m2.a1.a2) + (m1.a2 * m2.a2.a2) + (m1.a3 * m2.a3.a2);
res.a3 = (m1.a1 * m2.a1.a3) + (m1.a2 * m2.a2.a3) + (m1.a3 * m2.a3.a3);
return res;
}
}


public class Main {
public static void main() {
int screen_width = 80, height = 22;
char[] buffer = new char[1760];
double[] zBuffer = new double[1760];
double A = 0, B = 0;
int R2 = 2, R1 = 1;
System.out.print("\u001b[2J");
while (true) {
Arrays.fill(buffer, 0, 1760, ' ');
Arrays.fill(zBuffer, 0, 1760, 0);
for (float theta = 0; theta < 6.28; theta += 0.07) {
for (float phi = 0; phi < 6.28; phi += 0.02) {
singleRow circle = {2 + Math.cos(theta), Math.sin(theta), 0};
// rotation on Y-axis
Matrix Ry = new Matrix(
new singleRow(Math.cos(phi), 0, Math.sin(phi)),
new singleRow(0, 1, 0),
new singleRow(-Math.sin(phi), 0, Math.cos(phi))
);
// rotation on X-axis
Matrix Rx = new Matrix(
new singleRow(1, 0, 0),
new singleRow(0, Math.cos(A), Math.sin(A)),
new singleRow(0, -Math.sin(A), Math.cos(A))
);
// rotation on Z-axis
Matrix Rz = new Matrix(
new singleRow(Math.cos(B), Math.sin(B), 0),
new singleRow(-Math.sin(B), Math.cos(B), 0),
new singleRow(0, 0, 1)
);

singleRow donut = Matrix.multiply(circle, Ry);
singleRow rotateX = Matrix.multiply(donut, Rx);
// We will consider it as [Nx, Ny, Nz]
singleRow spinningDonut = Matrix.multiply(rotateX, Rz);
float reciNz = 1 / (spinningDonut.a3 + 5);

int x = 40 + 30 * spinningDonut.a1 * reciNz;
int y = 12 + 15 * spinningDonut.a2 * reciNz;

// o is index of current buffer
int o = x + screen_width * y;

int L = 8 * (spinningDonut.a2 - spinningDonut.a3
+ 2 * Math.cos(B) * Math.sin(A) * Math.sin(phi)
- 2 * Math.cos(phi) * Math.cos(theta) * Math.sin(B)
- 2 * Math.cos(phi) * Math.sin(B)
+ 2 * Math.cos(A) * Math.sin(phi)
);

// donut luminicity will be seen by these characters
// these 12
char[] charOpts = {'.', ',', '-', '~', ':', ';', '=', '!', '*', '#', '$', '@'};

if (x < screen_width && y < height && zBuffer[o] < reciNz) {
zBuffer[o] = reciNz;
// If L < 0, . will be buffer
buffer[o] = charOut[L > 0 ? L : 0];
}
}
}
// Clear screen
System.out.print("\u001b[H");
for (int i = 0; i <1761; i++) {
// On every 80th character, new line will be printed
// If there's a reminder then buffer printed
System.out.print(i % 80 ? buffer[i] : 10);
A += 0.00004;
B += 0.00002;
}
}
}
}


Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Explaining donut like 5 years old Part-4 (Last)

Thematisch verwandte Begriffe: Explaining, donut, like, years · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

💬 Kommentare werden geladen…
Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-101093 | Cotonti through 1.0.0 contains a cross-site request forgery vulnerabili…
Advisory →
tsecurity.de Icon
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag