[ Video ]
[ About ]
等間隔にX軸に対する線をNoise関数の値だけY軸をズラしながら描写しています。
ただし、Y軸をズラす値は、Xの中心(Width / 2)からの距離で増減するようにしてあるので、中心付近は影響が大きく、離れると減少、一定距離を離れると0になります。
意図せずですが、以前ネットで見て良いなと感じたモノを作れたので良き良き。
[ Source ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#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 windowResized(int w, int h) {}; void dragEvent(ofDragInfo dragInfo) {}; void gotMessage(ofMessage msg) {}; }; |
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 |
#include "ofApp.h" //-------------------------------------------------------------- void ofApp::setup() { ofSetFrameRate(60); ofBackground(39); ofSetWindowTitle("Insta"); ofEnableBlendMode(ofBlendMode::OF_BLENDMODE_ADD); } //-------------------------------------------------------------- void ofApp::update() { } //-------------------------------------------------------------- void ofApp::draw() { for (int y = 0; y <= ofGetHeight(); y += 10) { ofColor line_color; line_color.setHsb(ofMap(y, 0, ofGetHeight(), 0, 255), 192, 192); ofSetColor(line_color); ofPoint prev_point = ofPoint(-1, y); float noise_value = 0; for (int x = 0; x < ofGetWidth(); x += 1) { float range = ofMap(ofPoint(ofGetWidth() / 2, y).distance(ofPoint(x, y)), 0, ofGetWidth() * 0.35, 100, 0); if (range < 0) { range = 0; } noise_value = ofMap(ofNoise(x * 0.005 - ofGetFrameNum() * 0.01, y * 0.01), 0, 1, -range, range); ofPoint point(x, y + noise_value); ofDrawLine(prev_point, point); prev_point = point; } } } //-------------------------------------------------------------- int main() { ofSetupOpenGL(720, 720, OF_WINDOW); ofRunApp(new ofApp()); } |