이번에는 장미 곡선(Rose curve)으로 불리는 곡선족을 그려 보았다. 장미 곡선은 다음가 같은 매개변수 방정식으로 나타낼 수 있다.
p5.js
코드 보기
var x, y;
var t;
var n, d, k;
var Rose = [];
var nslider, dslider, button;
function setup() {
createCanvas(640, 600);
nslider = createSlider(1, 10, 3, 1);
nslider.position(20, 20);
dslider = createSlider(1, 10, 5, 1);
dslider.position(20, 45);
button = createButton("Refresh")
button.position(20, 560);
button.mousePressed(Refresh);
t = 0;
}
function draw() {
background(255);
stroke(220);
for (var i = 20; i < width; i += 40) {
line(0, i, width, i);
line(i, 0, i, height);
}
n = nslider.value();
d = dslider.value();
k = n/d;
x = 240 * sin(k * t) * cos(t);
y = 240 * sin(k * t) * sin(t);
Rose.push(createVector(x,y));
t += 0.1 / max(abs(k), 1);
noStroke();
fill(0);
textSize(15);
text("n = " + n, 28 + nslider.width, 17 + nslider.y);
text("d = " + d, 28 + dslider.width, 17 + dslider.y);
text("k = n/d = " + k, 30 + dslider.width, 41 + dslider.y);
translate(width/2 + 20, height/2 + 40);
stroke(255, 0, 0);
noFill();
beginShape();
for (var i = 0; i < Rose.length; i += 1) {
vertex(Rose[i].x, Rose[i].y);
}
endShape();
}
function Refresh() {
background(255);
Rose = [];
t = 0;
}
- 아쉽게도 p5.js 상에서는 무리수
값에 대한 곡선의 모습을 확인하는 건 불가능하다. [본문으로]
'Others > Processing' 카테고리의 다른 글
p5.js 연습 009. |
2017.10.27 |
---|---|
p5.js 연습 008. 리사주 곡선(Lissajous curve) (0) | 2017.07.21 |
p5.js 연습 006. 프랙탈 스파이로그래프(fractal spirograph) (0) | 2017.07.14 |
p5.js 연습 005. 에피사이클로이드(epicycloid) (0) | 2017.07.09 |
p5.js 연습 004. 스파이로그래프(Spirograph) (0) | 2017.07.07 |