2016-10-25 70 views
0

我想在處理中繪製圓,而不是通過繪製特定顏色的圓本身,而是通過反轉每個圓佔用的每個像素。以下是影響我要去爲:通過在處理中反轉顏色繪製形狀

circles drawn by described inversion method

除了不斷的像素值的矩陣的軌道,是有什麼辦法可以有效地實現在處理這些目標,希望能與內置的功能?

回答

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(); 
} 

這裏有一個預覽:

circles with difference blend mode

實際上你可以運行一個快速演示波紋管(點擊重繪):

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>