/
ofApp.cpp
73 lines (52 loc) · 1.92 KB
/
ofApp.cpp
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
#include "ofApp.h"
//--------------------------------------------------------------
void ofApp::setup() {
ofSetFrameRate(30);
ofSetWindowTitle("openFrameworks");
ofBackground(39);
ofSetLineWidth(3);
this->font.loadFont("fonts/Kazesawa-Bold.ttf", 50, true, true, true);
//this->word = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
this->word = "0123456789";
}
//--------------------------------------------------------------
void ofApp::update() {
}
//--------------------------------------------------------------
void ofApp::draw() {
ofTranslate(ofGetWindowSize() * 0.5);
ofColor color;
ofSeedRandom(39);
for (int i = 0; i < 600; i++) {
auto noise_seed = glm::vec2(ofRandom(1000), ofRandom(1000));
auto location = glm::vec2(
ofMap(ofNoise(noise_seed.x, ofGetFrameNum() * 0.0025), 0, 1, -600, 600),
ofMap(ofNoise(noise_seed.y, ofGetFrameNum() * 0.0025), 0, 1, -600, 600));
auto next = glm::vec2(
ofMap(ofNoise(noise_seed.x, (ofGetFrameNum() + 1) * 0.0025), 0, 1, -600, 600),
ofMap(ofNoise(noise_seed.y, (ofGetFrameNum() + 1) * 0.0025), 0, 1, -600, 600));
auto angle = std::atan2(next.y - location.y, next.x - location.x);
ofPushMatrix();
ofTranslate(location);
ofRotate(angle * RAD_TO_DEG + 90);
ofPath chara_path = this->font.getCharacterAsPoints(this->word[(int)ofRandom(this->word.size())], true, false);
vector<ofPolyline> outline = chara_path.getOutline();
ofFill();
ofSetColor(ofMap(i, 0, 600, 39, 239));
ofBeginShape();
for (int outline_index = 0; outline_index < outline.size(); outline_index++) {
ofNextContour(true);
auto vertices = outline[outline_index].getVertices();
for (auto& vertex : vertices) {
ofVertex(vertex);
}
}
ofEndShape(true);
ofPopMatrix();
}
}
//--------------------------------------------------------------
int main() {
ofSetupOpenGL(720, 720, OF_WINDOW);
ofRunApp(new ofApp());
}