[ Video ]
[ About ]
昨日、寝る前に頭に浮かんだやつ。画面中心と円の距離を半径としたときの円周の長さ10度分が円の半径
Colors. Circles.
[ 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 |
#pragma once #include "ofMain.h" 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 mouseEntered(int x, int y) {} void mouseExited(int x, int y) {} void windowResized(int w, int h) {} void dragEvent(ofDragInfo dragInfo) {} void gotMessage(ofMessage msg) {} vector<glm::vec2> locations; vector<glm::vec2> velocities; vector<ofColor> colors; }; |
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 |
#include "ofApp.h" //-------------------------------------------------------------- void ofApp::setup() { ofSetFrameRate(60); ofSetWindowTitle("openFrameworks"); ofBackground(0); ofEnableBlendMode(ofBlendMode::OF_BLENDMODE_ADD); ofSetCircleResolution(36); } //-------------------------------------------------------------- void ofApp::update() { ofColor color; if (ofRandom(100) < 50) { this->locations.push_back(glm::vec2()); this->velocities.push_back(glm::normalize(glm::vec2(ofRandom(-1, 1), ofRandom(-1, 1))) * 2); color.setHsb(ofRandom(255), 255, 255); this->colors.push_back(color); } for (int i = this->locations.size() - 1; i > -1; i--) { this->locations[i] += this->velocities[i]; if (glm::length(this->locations[i]) > 720){ this->locations.erase(this->locations.begin() + i); this->velocities.erase(this->velocities.begin() + i); this->colors.erase(this->colors.begin() + i); } } } //-------------------------------------------------------------- void ofApp::draw() { ofTranslate(ofGetWidth() * 0.5, ofGetHeight() * 0.5); for (int i = 0; i < this->locations.size(); i++) { ofSetColor(this->colors[i]); float radius = (2 * PI * glm::length(this->locations[i])) / 360 * 10; ofDrawCircle(this->locations[i], radius); } } //-------------------------------------------------------------- int main() { ofSetupOpenGL(720, 720, OF_WINDOW); ofRunApp(new ofApp()); } |