我想在Processing中绘制圆圈,而不是通过绘制特定颜色的圆圈本身,而是通过反转每个圆圈占据的每个像素。以下是我想要的效果:
除了跟踪像素值矩阵之外,有没有办法在Processing中有效地实现这些目标,希望有内置的功能?
答案 0 :(得分:1)
您应该可以通过将blendMode()设置为DIFFERENCE
来轻松实现这一目标:
void setup(){
size(400,400);
background(0);
noStroke();
//change blend mode to difference
blendMode(DIFFERENCE);
//draw circles
for(int i = 0 ; i < 10; i++){
float diameter = random(50,200);
ellipse(random(width * .35,width * .65),random(height * .2,height * .8),diameter,diameter);
}
}
//the code bellow is just to redraw on click
void draw(){}
void mouseReleased(){
setup();
}
这是预览:
你可以实际运行一个快速演示(点击重绘):
function setup(){
createCanvas(400,400);
background(0);
noStroke();
//change blend mode to difference
blendMode(DIFFERENCE);
//draw circles
for(var i = 0 ; i < 10; i++){
var diameter = random(50,200);
ellipse(random(width * .35,width * .65),random(height * .2,height * .8),diameter,diameter);
}
}
//the code bellow is just to redraw on click
function draw(){}
function mouseReleased(){
setup();
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.4/p5.min.js"></script>