まずはsinとcosを使った円の描写
//-------------------------------------------------------------- void testApp::setup(){ ofBackground(0, 0, 0); } //-------------------------------------------------------------- void testApp::update(){ } //-------------------------------------------------------------- void testApp::draw(){ ofTranslate(ofGetWidth()/2, ofGetHeight()/2);//原点を画面の中心に //方眼紙 int lines=ofGetWidth()/2/20+1; ofSetColor(70, 70, 70); for (int i=0; i < lines; i++) { ofLine(20*i, -1*ofGetHeight()/2, 20*i, ofGetHeight()/2); ofLine(-20*i, -1*ofGetHeight()/2, -20*i, ofGetHeight()/2); ofLine(-1*ofGetWidth()/2, 20*i, ofGetWidth()/2, 20*i); ofLine(-1*ofGetWidth()/2, -20*i, ofGetWidth()/2, -20*i); } ofSetColor(100, 100, 100); ofLine(0, -1*ofGetHeight()/2, 0, ofGetHeight()/2);//中心線 ofLine(-1*ofGetWidth()/2, 0, ofGetWidth()/2, 0); //式 ofSetColor(124, 181, 255); float radius=200; for (int i=0; i < 1000; i++) { float x=cos(i)*radius; float y=sin(i)*radius; ofCircle(x, y, 1); } }
螺旋
#include "testApp.h" //-------------------------------------------------------------- void testApp::setup(){ ofBackground(0, 0, 0); } //-------------------------------------------------------------- void testApp::update(){ } //-------------------------------------------------------------- void testApp::draw(){ ofTranslate(ofGetWidth()/2, ofGetHeight()/2);//原点を画面の中心に //方眼紙 int lines=ofGetWidth()/2/20+1; ofSetColor(70, 70, 70); for (int i=0; i < lines; i++) { ofLine(20*i, -1*ofGetHeight()/2, 20*i, ofGetHeight()/2); ofLine(-20*i, -1*ofGetHeight()/2, -20*i, ofGetHeight()/2); ofLine(-1*ofGetWidth()/2, 20*i, ofGetWidth()/2, 20*i); ofLine(-1*ofGetWidth()/2, -20*i, ofGetWidth()/2, -20*i); } ofSetColor(100, 100, 100); ofLine(0, -1*ofGetHeight()/2, 0, ofGetHeight()/2);//中心線 ofLine(-1*ofGetWidth()/2, 0, ofGetWidth()/2, 0); //式 ofSetColor(124, 181, 255); for (int i=0; i < 10000; i++) { float radius=10+0.02*i;//螺旋の間隔調整 float x=cos(i*0.01)*radius; float y=sin(i*0.01)*radius; ofCircle(x, y, 1); } } インボリュート曲線
#include "testApp.h" //-------------------------------------------------------------- void testApp::setup(){ ofBackground(0, 0, 0); } //-------------------------------------------------------------- void testApp::update(){ } //-------------------------------------------------------------- void testApp::draw(){ ofTranslate(ofGetWidth()/2, ofGetHeight()/2);//原点を画面の中心に //方眼紙 int lines=ofGetWidth()/2/20+1; ofSetColor(70, 70, 70); for (int i=0; i < lines; i++) { ofLine(20*i, -1*ofGetHeight()/2, 20*i, ofGetHeight()/2); ofLine(-20*i, -1*ofGetHeight()/2, -20*i, ofGetHeight()/2); ofLine(-1*ofGetWidth()/2, 20*i, ofGetWidth()/2, 20*i); ofLine(-1*ofGetWidth()/2, -20*i, ofGetWidth()/2, -20*i); } ofSetColor(100, 100, 100); ofLine(0, -1*ofGetHeight()/2, 0, ofGetHeight()/2);//中心線 ofLine(-1*ofGetWidth()/2, 0, ofGetWidth()/2, 0); //式 float x=0; float y=0; ofSetColor(124, 181, 255); for (int i=0; i < 10000; i++) { float sita=fmodf(i,360); float size=1; x=size*(sita*cos(sita)); y=size*(sita*sin(sita)); ofCircle(x, y, 5); } }
バラ曲線
void testApp::draw(){ ofTranslate(ofGetWidth()/2, ofGetHeight()/2);//原点を画面の中心に //方眼紙 int lines=ofGetWidth()/2/20+1; ofSetColor(70, 70, 70); for (int i=0; i < lines; i++) { ofLine(20*i, -1*ofGetHeight()/2, 20*i, ofGetHeight()/2); ofLine(-20*i, -1*ofGetHeight()/2, -20*i, ofGetHeight()/2); ofLine(-1*ofGetWidth()/2, 20*i, ofGetWidth()/2, 20*i); ofLine(-1*ofGetWidth()/2, -20*i, ofGetWidth()/2, -20*i); } ofSetColor(100, 100, 100); ofLine(0, -1*ofGetHeight()/2, 0, ofGetHeight()/2);//中心線 ofLine(-1*ofGetWidth()/2, 0, ofGetWidth()/2, 0); //式 float x=0; float y=0; ofSetColor(124, 181, 255, 100); for (int i=0; i < 36000; i++) { float sita=fmodf(i*0.01,360);//点の数 int d=7; int n=8; float size=300*sin(n*sita); x=size*sin(d*sita); y=size*cos(d*sita); ofCircle(x, y, 1); } //float sita=fmodf(i,360); }
dとnに入れる値を変更する事で、花びらの形を変える事が出来ます
参考: http://ja.wikipedia.org/wiki/%E3%83%90%E3%83%A9%E6%9B%B2%E7%B7%9A
0 件のコメント:
コメントを投稿