[work 39] Radial lines
![[work 39] Radial lines](https://i0.wp.com/tsukuru.hayato-works.com/wp-content/uploads/2019/05/outFrameImg0900.png?fit=1024%2C1024&ssl=1)
Movie
Source code
about
- 放射状の線
file
- 上部にあるファイル名が表示されているボタンを押すと、表示されるファイルが切り替わります
- 別ウィンドウ表示したい時や行番号などが無いRawMode表示したい時は、コード内右上のボタンを押してください(ボタンはマウスオーバーすると表示されます)
#include "ofMain.h"
#include "ofApp.h"
//================================
int main( ){
// 4K:4096x2160
// 2K:2048x1080
// FullHD:1920x1080
// HD:1440x1080
// HD720p:1280x720
// DVD:720x480
// setup the GL context
// ofSetupOpenGL(1280,720, OF_WINDOW);
ofSetupOpenGL(1024,1024, OF_WINDOW);
// this kicks off the running of my app
// can be OF_WINDOW or OF_FULLSCREEN
// pass in width and height too:
ofRunApp( new ofApp());
}
#pragma once
#include "ofMain.h"
#include "LoopNoise.hpp"
#ifdef USE_MYCOLLIB
#include "myColorLib.hpp"
#endif
class ofApp : public ofBaseApp{
public:
ofApp();
~ofApp();
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);
private:
std::vector<shared_ptr<ofFbo>> fbos;
std::vector<shared_ptr<LoopNoise>> lns;
std::vector<ofColor> colors;
float angle;
#ifdef USE_MYCOLLIB
myColorLib mc;
#endif
};
#include "ofApp.h"
ofApp::ofApp(){
}
ofApp::~ofApp(){
}
//--------------------------------------------------------------
void ofApp::setup(){
double fps = 30;
ofSetFrameRate(fps);
ofBackground(255);
ofSetBackgroundAuto(true);
ofSetVerticalSync(true);
#ifdef USE_MYCOLLIB
mc.addColorSet(MYCOL_CUTE1);
mc.addColorSet(MYCOL_CUTE2);
#endif
for (int i = 0; i < 8; i++) {
fbos.push_back(make_shared<ofFbo>());
fbos.back()->allocate(ofGetWidth(), ofGetHeight());
#ifdef USE_MYCOLLIB
colors.push_back(mc.getColor(ofRandom(1)));
#else
colors.push_back(ofColor(ofRandom(255), ofRandom(255), ofRandom(255)));
#endif
lns.push_back(make_shared<LoopNoise>());
}
angle = 0;
}
//--------------------------------------------------------------
void ofApp::update(){
for (int i = 0; i < 8; i++) {
fbos[i]->begin();
ofPushMatrix();
ofTranslate(ofGetWidth() / 2, ofGetHeight() / 2);
ofSetColor(colors[i]);
ofSetLineWidth(1);
float rad = TWO_PI * ((float)angle / 360.f);
float x = std::cos(rad) * (100 * (8 - i) + 10 * (lns[i]->getSignedLoopNoise(rad)));
float y = std::sin(rad) * (100 * (8 - i) + 10 * (lns[i]->getSignedLoopNoise(rad)));
ofDrawLine(0, 0, x, y);
ofVec2f ext = ofVec2f(x, y);
ext *= 1.02;
ofSetColor(ofColor(255));
ofDrawLine(x, y, ext.x, ext.y);
ofPopMatrix();
fbos[i]->end();
}
angle += 0.5;
}
//--------------------------------------------------------------
void ofApp::draw(){
for (shared_ptr<ofFbo> &f : fbos) {
f->draw(0, 0);
}
}
#ifndef LoopNoise_hpp
#define LoopNoise_hpp
#include <stdio.h>
#include "ofMain.h"
class LoopNoise {
public:
LoopNoise();
~LoopNoise();
float getLoopNoise(float angle);
float getSignedLoopNoise(float angle);
private:
ofVec2f center;
float radius;
};
#endif /* LoopNoise_hpp */
#include "LoopNoise.hpp"
LoopNoise::LoopNoise()
{
center.x = ofRandom(1000);
center.y = ofRandom(1000);
radius = 10;
}
LoopNoise::~LoopNoise()
{
}
float LoopNoise::getLoopNoise(float angle)
{
return ofNoise(center.x + std::cos(angle) * radius, center.y + std::sin(angle) * radius);
}
float LoopNoise::getSignedLoopNoise(float angle)
{
return ofSignedNoise(center.x + std::cos(angle) * radius, center.y + std::sin(angle) * radius);
}
Link to the reference page
ソースコードで使用したAPIの中から要点になりそうなものをいくつか選んでリストアップしました。
| category | API/Lib |
| openframeworks | ofFbo |
Development environment
- openframeworks 0.10.1
- c++
- macOS
- Xcode