Farbe ändern, wenn der Kreis das Dreieck berührt bei Processing?
Wir machen in der Schule gerade etwas mit processing.
Bei mir ist es so.
Wenn man den Bildschirm berührt, erscheint der gelbe Kreis, den man bewegen kann und der Baum färbt sich insgesamt ein bisschen heller.
(Schwer zu erkennen auf den Bildern)
Was ich ändern will, ist dass der Baum nur dort die Farbe ändert, wo der Kreis den Baum berührt, so wie eine Taschenlampe.
Kann mir Jemand erklären, wie da geht?
das ist das was ich gemacht habe:
void setup () {
size(screenWidth, screenHeight);
}
void draw () {
background(200,0,0);
noStroke();
if(mousePressed){
fill(250,230,130);
ellipse(mouseX,mouseY,500,520);}
fill(130,100,30)
rect(530,500,50,80);
fill(100, 180,150);
if(mousePressed) {
fill(150,230,170)};
triangle(550, 100,470,250,630,250);
triangle(550, 180,380,400,720,400);
triangle(550,260,320,550,800,550);
}
schon mal Danke ;- )
1 Antwort
Du kannst eine Maske dafür verwenden.
Zeichne im ersten Schritt den roten Hintergrund und deinen Kreis. Im zweiten Schritt legst du dir eine PGraphics-Instanz an, die du mit der Baumfarbe füllst. Sie kann die Form eines Rechtecks haben in dem der grünbewachsene Teil des Baum mindestens einmal hineinpasst und muss dementsprechend auch so positioniert werden. Auf diese Fläche kannst du anschließend deinen Kreis in der Beleuchtungsfarbe zeichnen.
PGraphics sourceImage;
void draw() {
/* ... */
sourceImage = createGraphics(400, 400);
sourceImage.beginDraw();
/* draw background and light circle ... */
sourceImage.endDraw();
/* ... */
}
Zum Schluss folgt die Maske. Du brauchst eine zweite PGraphics-Instanz, die die Form der Baumkrone repräsentiert. Mit der mask-Funktion erzeugst du die Maske und mit image zeichnest du das maskierte Bild.
sourceImage.mask(maskImage);
image(sourceImage, 0, 0);
Wenn du das noch für deinen Baumstamm machen möchtest, kannst du genauso vorgehen.