-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprocessing_matrix_effect.pde
More file actions
104 lines (83 loc) · 3.5 KB
/
Copy pathprocessing_matrix_effect.pde
File metadata and controls
104 lines (83 loc) · 3.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// Matrix movie effect
// Reimplementation and improvement (?) of Ji Zhang's version
// https://www.openprocessing.org/sketch/78626
// *********************************************
// Globale Variablen
int anzahlSpalten; // Anzahl der Spalten, die pro draw() aktualisiert werden
int maxAnzahlSpalten; // max. Anzahl der Spalten, die pro draw() aktualisiert werden
int yPosition; // Aktuelle y-Position zur Zeichen-Darstellung
int initYPosition; // Initiale y-Position
int[] xPositionen; // Feld für zufällige initiale x-Positionen
int[] yOffset; // Feld für zufällige Verschiebungen der y-Position
// Farbe der Ingenieurwissenschaften der htw saar
color htw_ingwi = color(75, 180, 230);
int fontSize = 10;
// *********************************************
// Vorbereitung
void setup(){
size(800, 600);
frameRate(40);
// Spalten maximal ca. auf Fensterbreite
maxAnzahlSpalten = (int) width/fontSize;
// Außerhalb des Fensters wegen des Fade-Effekts
initYPosition = -height/2;
yPosition = initYPosition;
// Felder mit zufälligen x-Positionen und y-Verschiebungen befüllen
erzeugeZufaelligeXYWerte();
}
// *********************************************
void draw(){
// Transparentes Rechteck in Fenstergröße
// --> Fade-Effekt über mehrere Frames hinweg
fill(0, 25.0f); // Je höher der Wert, desto weniger Fade-Effekt
rect(0, 0, width, height);
// Vordergrundfarbe + Schriftgröße
fill(htw_ingwi);
//fill(0,255,0); // GREEN
//PFont font;
//font = createFont("AnonymousPro-Regular", fontSize); // SourceCodePro-Bold AnonymousPro-Regular
//textFont(font);
textSize(fontSize);
// Für jede Spalte ein zufälliges Zeichen ermitteln und an zufällig bestimmter Stelle anzeigen
for (int i = 0; i < anzahlSpalten; i++) {
char randomLetter = (char) random(33, 255); // http://www.asciitable.com/
text(randomLetter, xPositionen[i], yPosition + yOffset[i]);
}
// In Buchstabengröße nach unten zum Fensterrand fortschreiten
yPosition = yPosition + fontSize; // ggf. noch mit vertikalem Abstand zwischen den Buchstaben (int) fontSize/1.2
// Reset, falls das Ende des Fensters erreicht ist
if (yPosition > height) { // Faktor > 1 --> außerhalb des Fensters, Schätzwert wegen Fade-Effekt
yPosition = initYPosition; // Wieder oben außerhalb des Fensterrandes beginnen
// Neue zufällige x-Positionen und y-Verschiebungen
erzeugeZufaelligeXYWerte();
}
// Werbung ;-)
zeigeWerbung();
// Einzelne Bilder speichern; z.B., um eine Animation später daraus zu generieren
//saveFrame("line-######.png");
}
// *********************************************
// Felder mit zufälligen x-Positionen und y-Verschiebungen befüllen
void erzeugeZufaelligeXYWerte() {
// Zufällige Anzahl von Spalten, die dargestellt werden
anzahlSpalten = (int) random(maxAnzahlSpalten/100,maxAnzahlSpalten);
// Felder neu erstellen
xPositionen = new int[anzahlSpalten];
yOffset = new int[anzahlSpalten];
// Befülle Felder zufällig
for (int i = 0; i < anzahlSpalten; i++) {
xPositionen[i] = (int) random(width/fontSize)*fontSize;
yOffset[i] = (int) random(initYPosition,height);
}
}
// *********************************************
// "Werbeblock"
void zeigeWerbung() {
textSize(32); // Schriftgröße
textAlign(CENTER, CENTER); // Ausrichtung des Textes
if ( (frameCount%400) == 0 ) {
text("KOMMUNIKATIONSINFORMATIK", width/2,height/2);
} else if( (frameCount%200) == 0 ) {
text("PRAKTISCHE INFORMATIK", width/2,height/2);
}
}