我正在尝试创建同心圆,这些圆圈充满了沿相反方向移动的线条(跟随鼠标)。我无法弄清楚如何只用线条填充圆圈 - 我使用了一个for循环来制作线条,并希望在圆圈半径之外将它们剪掉。基本上,我试图用线条图案填充圆圈。
这是我的代码:
float r = 0;
float startAngle;
float density;
float radius;
void setup() {
size(500, 500);
background(255);
stroke(150, 0, 150);
}
void draw() {
int[] s = {
500, 325, 200, 100, 50, 25
};
for (int i = 0; i < 500; i = i+5) {
line(0, i, 500, i);
if(i > s[0]) {
noStroke();
}
}
translate(width/2, height/2);
rotate(r);
r = r + .01;
fill(0);
ellipse(0, 0, s[0], s[0]);
fill(50);
ellipse(0, 0, s[1], s[1]);
fill(100);
ellipse(0, 0, s[2], s[2]);
fill(150);
ellipse(0, 0, s[3], s[3]);
fill(200);
ellipse(0, 0, s[4], s[4]);
fill(255);
ellipse(0, 0, s[5], s[5]);
}
任何帮助将不胜感激!
答案 0 :(得分:1)
一般的“我该怎么做”这类问题很难提供帮助。 Stack Overflow专为更具体的“我试过X,期望Y,但得到Z而不是”类型问题而设计。但我会尽力帮助。
我能给你的最好建议是从小做起。 Break your problem down into smaller pieces并将这些作品一次一张。
例如,为什么不从一个只显示单个圆圈的简单示例程序开始,而不是从显示多个圆圈的整个程序开始?尝试在其中显示一个模式。
与编程中的所有内容一样,有多种方法可以做到这一点。
选项1:您可以探索使用基本几何和触发来确定圆点上的点应该在哪里,然后根据这些点绘制它们。 cos()
和sin()
函数可能会派上用场。
选项2:您还可以使用图像屏蔽技术。例如,您可以创建线条纹理,然后使用圆形蒙版来隔离这些线条的cirlce。 texture()
功能或PImage#mask()
功能将成为您的朋友。
尝试这些方法,看看你最喜欢哪一种。 The Processing reference是您最好的朋友:例如,here是texture()
函数的引用,here是PImage#mask()
函数的引用。然后,如果您遇到特定步骤,您可以发布MCVE这一步,我们将从那里开始。祝你好运。