Processingとは
Processingの良さ (※個人の感想です)
- 余計なしきたりとか覚えることが少なくて、書きたいことだけ書ける。
- キャンバスって何よ? コンテキストって何よ? みたいな本質的でない知識が不要。
- 基本的な機能だけならimportも不要。ライブラリはメニューからimportできる。
- 三角関数がMath.cos(theta)みたいにならず、ふつうにcos(theta)と書ける。
コッホ曲線のスケッチ
コッホ曲線を描画するスケッチを書いてみた。
Processingはじめて1時間くらいで書けた。楽しい。
void koch(float x1, float y1, float x2, float y2, int n) { float x3 = (2*x1 + x2)/3.0; float y3 = (2*y1 + y2)/3.0; float x4 = (x1 + 2*x2)/3.0; float y4 = (y1 + 2*y2)/3.0; float x = (x2 - x1) / sqrt(3); float y = (y2 - y1) / sqrt(3); float theta = radians(-30); float x5 = x1 + x*cos(theta) - y*sin(theta); float y5 = y1 + x*sin(theta) + y*cos(theta); n--; if(n<=0){ line(x1, y1, x3, y3); line(x3, y3, x5, y5); line(x5, y5, x4, y4); line(x4, y4, x2, y2); }else{ koch(x1, y1, x3, y3, n); koch(x3, y3, x5, y5, n); koch(x5, y5, x4, y4, n); koch(x4, y4, x2, y2, n); } } void setup() { size(640, 480); translate(320, 240); background(255); stroke(0,0,255); strokeWeight(1); smooth(); float R = 200; float[] x = new float[3]; float[] y = new float[3]; for(int i=0;i<3;i++){ x[i] = R*cos(radians(120*i)); y[i] = R*sin(radians(120*i)); } koch(x[0], y[0], x[1], y[1], 5); koch(x[1], y[1], x[2], y[2], 5); koch(x[2], y[2], x[0], y[0], 5); } void draw() { }
実行結果