[ Video ]
[ About ]
日本は梅雨の時期。
It’s rainy season in Japan.
[ Source ]
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 |
#pragma once #include "ofMain.h" //-------------------------------------------------------------- class Ripple { public: glm::vec2 location; float radius; }; //-------------------------------------------------------------- class ofApp : public ofBaseApp { public: void setup(); void update(); void draw(); void keyPressed(int key) {}; void keyReleased(int key) {}; void mouseMoved(int x, int y) {}; void mouseDragged(int x, int y, int button) {}; void mousePressed(int x, int y, int button) {}; void mouseReleased(int x, int y, int button) {}; void windowResized(int w, int h) {}; void dragEvent(ofDragInfo dragInfo) {}; void gotMessage(ofMessage msg) {}; vector<Ripple> ripple_list; }; |
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 |
#include "ofApp.h" //-------------------------------------------------------------- void ofApp::setup() { ofSetFrameRate(60); ofSetWindowTitle("openFrameworks"); ofBackground(239); ofSetLineWidth(2); ofNoFill(); } //-------------------------------------------------------------- void ofApp::update() { ofSeedRandom(39); for (int i = 0; i < 3; i++) { if (ofGetFrameNum() % 10 == 0) { auto noise_location = glm::vec2( ofMap(ofNoise(ofRandom(1000), ofGetFrameNum() * 0.008), 0, 1, 120, ofGetWidth() - 120), ofMap(ofNoise(ofRandom(1000), ofGetFrameNum() * 0.008), 0, 1, 120, ofGetHeight() - 120) ); auto ripple = Ripple(); ripple.location = noise_location; ripple.radius = 1; this->ripple_list.push_back(ripple); } } for (int i = this->ripple_list.size() - 1; i >= 0; i--) { if (this->ripple_list[i].radius < 70) { this->ripple_list[i].radius += 1; } else { this->ripple_list.erase(this->ripple_list.begin() + i); } } } //-------------------------------------------------------------- void ofApp::draw() { for (auto& ripple : this->ripple_list) { if (ripple.radius > 50) { ofSetColor(ofMap(ripple.radius, 50, 70, 39, 239)); } else { ofSetColor(39); } ofBeginShape(); for (int deg = 0; deg < 360; deg += 5) { ofVertex(ripple.location + glm::vec2(ripple.radius * cos(deg * DEG_TO_RAD), ripple.radius * sin(deg * DEG_TO_RAD))); } ofEndShape(true); } } //-------------------------------------------------------------- int main() { ofSetupOpenGL(720, 720, OF_WINDOW); ofRunApp(new ofApp()); } |