見出し画像

ProcessingでGenerative art #66

Code

int actRandomSeed = 0;
int count = 140;
Node [] nodes = new Node[count];
int drawMode = 1;
float maxLength = 300;
float range = 250;

void setup() {
  size(800, 800);
  pixelDensity(2);
  colorMode(HSB, 360, 100, 100, 100);
  noLoop();
  for (int i = 0; i < count; i++) {
    nodes[i] = new Node();
  }
}

void draw() {
  randomSeed(actRandomSeed);
  
  if (drawMode == 1) {
    background(360);
  }
  if (drawMode == 2) {
    background(0);
  }
  if (drawMode == 3) {
    background(360);
  }

  for (int i = 0; i < count -1; i++) {
    Node thisNode = nodes[i];
    for (int j = 0; j < count; j++) {
      Node otherNode = nodes[j];
      drawLine(thisNode, otherNode);
    }
  }

  for (int i = 0; i < count; i++) {
    nodes[i].display();
  }
}

void drawLine(Node n1, Node n2) {
  float distance = dist(n1.position.x, n1.position.y, n2.position.x, n2.position.y);
  float distMouse= dist(mouseX, mouseY, n2.position.x, n2.position.y);

  if (distMouse < range) {
    if (distance <= maxLength) {
      strokeWeight(0.7);
      noFill();
      if (drawMode == 1)stroke(0, 30);
      if (drawMode == 2) {
        strokeWeight(1);
        stroke(random(250, 360), 90, 90, 40);
      }
      if (drawMode == 3) {
        strokeWeight(random(30));
        stroke(210, random(100), random(30, 100), 60);
      }
      line(n1.position.x, n1.position.y, n2.position.x, n2.position.y);
    }
  }
}

void mousePressed() {
  redraw();
  for (int i = 0; i < count; i++) {
    nodes[i] = new Node();
  }
  actRandomSeed = (int)random(10000);
}

void keyPressed() {
  if (key == 's')saveFrame("####.png");

  if (key == '1')drawMode = 1;
  if (key == '2')drawMode = 2;
  if (key == '3')drawMode = 3;
}

/-------------------------------------------------------------------

class Node {
  PVector position;
  float ellipseSize;
  Node() {
    position = new PVector(random(width), random(height));
    ellipseSize = random(5, 40);
    if(drawMode == 3)ellipseSize = 20;
  }

  void display() {
    noStroke();
    
    pushMatrix();
    translate(position.x, position.y);
    rotate(PI * 0.25);
    
    fill(0);
    if(drawMode == 2)fill(200, 90, 70, 50);
    ellipse(0, 0, ellipseSize, ellipseSize);
    
    fill(360,90);
    ellipse(0 + ellipseSize*0.25, 0 - ellipseSize*0.25, ellipseSize * 0.1, ellipseSize * 0.1);
    
    fill(360, 90);
    ellipse(0, 0 - ellipseSize*0.30, ellipseSize * 0.25, ellipseSize * 0.15);
    
    popMatrix();
  }
}

Happy Coding!!

応援してくださる方!いつでもサポート受け付けてます!