用 P5.js 中的形状制作戒指
Making a ring out of shapes in P5.js
我想用 P5.js 中的圆制作一个环。
我希望圆圈之间的大小相同并完成环,但圆圈的数量可以更改为任何值。
for(var i = 0; i < 13; i++){
xCircle = middle + cos(i/3) * 200;
yCircle = middle - sin(i/3) * 200;
}
这只会启动环但不会完成环。而且我知道某处必须是圆圈总数但我不知道在哪里。
以弧度表示的完整圆的角度为 2*PI = 6,2836...。
您已将完整圆的角度除以零件(圆)的数量,并将其乘以圆的索引 (i
)。
例如
middle = // ...
circleRadius = // ...
circles = 13;
angle = Math.PI*2 / circles;
for(var i = 0; i < circles; i++){
xCircle = middle + cos(angle*i) * 200;
yCircle = middle - sin(angle*i) * 200;
ellipse(xCircle, yCircle, circleRadius*2, circleRadius*2);
}
如果您想使用度数而不是弧度,则可以通过 angleMode()
.
将角度模式切换为度数
一个完整圆的角度是 360 度:
angleMode(DEGREES);
circles = 13;
angle = 360 / circles;
for(var i = 0; i < circles; i++){
xCircle = middle + cos(angle*i) * 200;
yCircle = middle - sin(angle*i) * 200;
ellipse(xCircle, yCircle, circleRadius*2, circleRadius*2);
}
如果你想画"touching"个圆形成一个圆形,那么一个圆的半径(circleRadius
)可以通过sin(angle/2) * radius
来计算,其中radius
是圆形的半径:
circles = 13;
angle = Math.PI*2 / circles;
radius = 200;
circleRadius = sin(angle/2) * radius;
看例子:
function setup() {
createCanvas(250, 250);
}
function draw() {
background(0);
fill(0);
stroke(255, 0, 0)
strokeWeight(2);
middle = width/2;
circles = 13;
angle = Math.PI*2 / circles;
radius = 100;
circleRadius = sin(angle/2) * radius;
for(var i = 0; i < circles; i++){
xCircle = middle + cos(angle*i) * radius;
yCircle = middle - sin(angle*i) * radius;
ellipse(xCircle, yCircle, circleRadius*2, circleRadius*2);
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.8.0/p5.js"></script>
我想用 P5.js 中的圆制作一个环。 我希望圆圈之间的大小相同并完成环,但圆圈的数量可以更改为任何值。
for(var i = 0; i < 13; i++){
xCircle = middle + cos(i/3) * 200;
yCircle = middle - sin(i/3) * 200;
}
这只会启动环但不会完成环。而且我知道某处必须是圆圈总数但我不知道在哪里。
以弧度表示的完整圆的角度为 2*PI = 6,2836...。
您已将完整圆的角度除以零件(圆)的数量,并将其乘以圆的索引 (i
)。
例如
middle = // ...
circleRadius = // ...
circles = 13;
angle = Math.PI*2 / circles;
for(var i = 0; i < circles; i++){
xCircle = middle + cos(angle*i) * 200;
yCircle = middle - sin(angle*i) * 200;
ellipse(xCircle, yCircle, circleRadius*2, circleRadius*2);
}
如果您想使用度数而不是弧度,则可以通过 angleMode()
.
将角度模式切换为度数
一个完整圆的角度是 360 度:
angleMode(DEGREES);
circles = 13;
angle = 360 / circles;
for(var i = 0; i < circles; i++){
xCircle = middle + cos(angle*i) * 200;
yCircle = middle - sin(angle*i) * 200;
ellipse(xCircle, yCircle, circleRadius*2, circleRadius*2);
}
如果你想画"touching"个圆形成一个圆形,那么一个圆的半径(circleRadius
)可以通过sin(angle/2) * radius
来计算,其中radius
是圆形的半径:
circles = 13;
angle = Math.PI*2 / circles;
radius = 200;
circleRadius = sin(angle/2) * radius;
看例子:
function setup() {
createCanvas(250, 250);
}
function draw() {
background(0);
fill(0);
stroke(255, 0, 0)
strokeWeight(2);
middle = width/2;
circles = 13;
angle = Math.PI*2 / circles;
radius = 100;
circleRadius = sin(angle/2) * radius;
for(var i = 0; i < circles; i++){
xCircle = middle + cos(angle*i) * radius;
yCircle = middle - sin(angle*i) * radius;
ellipse(xCircle, yCircle, circleRadius*2, circleRadius*2);
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.8.0/p5.js"></script>