• fullscreen
  • Circle.pde
  • Lesson_Five_Project_Simple.pde
  • class Circle {
        float x,y; //location
        float dia; //diameter
        float exSpd; //expansion speed
        color c; //color of each circle
      Circle (float x_, float y_) {
        dia = 10; //starting diameter, also dot for moving, and dot for bounce-back
        x = x_; //x position
        y = y_; //y position
        c = color(random(255), random(255), random(255)); //randomize color of circle
      void display(float exSpd_) {
        exSpd = exSpd_;
        stroke(c); //random color
        ellipse(x,y,dia,dia); //displays the circle
        dia += exSpd; //expands the circle at rate pre-defined
        ellipse(x,y,10,10); //displays a solid circle in the center of expanding one
      float diameter() { //sends diamter expansion data to the main draw loop for storing in an array
        return dia;
    ArrayList circles;
    //Circle[] circles = new Circle[0]; //object array
    float[] expandSpeed = new float[0]; //speed array
    float[] xCoord = new float[0]; //x coordinates array
    float[] yCoord = new float[0]; //y coordinates array
    float[] diaArray = new float[0]; //diameters array
    int iter; //counter to keep track of current interation
    float x,y,dia;
    void setup() {
      circles = new ArrayList(); //create blank arraylist
    void draw() {
      for(int i = 0; i < circles.size(); i++) { //loop for the current number of objects
        iter = i; //iteration counter equals i
        Circle circle = (Circle) circles.get(i); //get object from ArrayList position i
        circle.display(expandSpeed[i]); //display the object Array
        diaArray[i] = circle.diameter(); //fill the diameter array to that it updates with display
        if (circle.diameter() < 13) { //if circle gets too small, expand
          expandSpeed[i] = 1;
        x = xCoord[iter]; //pull the current iteration of x coordinates
        y = yCoord[iter]; //pull the current iteration of y coordinates
        dia = diaArray[iter]; //pull the current iteration of diameter data
        for(int h = 0; h < diaArray.length-1; h++) { //for each indice currently holding object/xy/diameter data
    	  if (h != iter) { //NOT including the iteration that was pulled before this loop
    	      float distance = dist(x,y,xCoord[h],yCoord[h]); //get distance between current iteration and all other points
    	      if(distance < dia/2+diaArray[h]/2) { //if that distance is greater than current radius plus all other radi
                      expandSpeed[h] = -1; //reverse current iteration
                      expandSpeed[iter] = -1; //and all other colliding iterations
    void mousePressed() {
      float xCoord_ = mouseX; //add place to xCoord array and input current mouseX data
      xCoord = (float[]) append(xCoord, xCoord_); 
      float yCoord_ = mouseY; //add place to yCoord array and input current mouseY data
      yCoord = (float[]) append(yCoord, yCoord_);
      float diaArray_ = 10; //add place to diameter Array and input dumb placeholder data
      diaArray = (float[]) append(diaArray, diaArray_);
      float expandSpeed_ = .2; //add place to expnasion speed Array and input the speed
      expandSpeed = (float[]) append(expandSpeed, expandSpeed_);
      circles.add(new Circle(mouseX,mouseY)); //add new object to object arrayList
    void keyPressed() {
      if (circles.size() > 0) {
      xCoord = shorten(xCoord);
      yCoord = shorten(yCoord);
      diaArray = shorten(diaArray);
      expandSpeed = shorten(expandSpeed);


    tweaks (0)

    about this sketch

    This sketch is running as Java applet, exported from Processing.



    Report Sketch

    Report for inappropriate content

    Please provide details if possible:

    Your have successfully reported the sketch. Thank you very much for helping to keep OpenProcessing clean and tidy :)

    Make a Copyright Infringement claim

    kina smith


    Add to Faves Me Likey@!
    You must login/register to add this sketch to your favorites.

    inspired from the Pulsate App for android phones.
    press the anykey to undo last placement.

    You need to login/register to comment.