logo

BaseAgent_Class_Worm

import toxi.geom.*;
class Worm {
  /////////////////////////////////////////////////////////////////////////////////////
  //Class Variables--------------------------------------------------------------------
  /////////////////////////////////////////////////////////////////////////////////////
  float rad = 15; //Radius of the ellipse
  float noiseScale = 75;// random(0.02, 10.02); //Noise ScaleValue
  float noiseStrength = 8.5;
  ArrayList<Vec3D>wormTrail;

  Vec3D headPos = new Vec3D (0, 0, 0); //Create a new vector
  Vec3D newVecloc = new Vec3D (0, 0, 0); //Create a new vector
  //Vec3D speedVec = new Vec3D (random(10, 50), 0, 0); //Create self.vec 
  Vec3D speedVec = new Vec3D (2, 0, 0); //Create self.vec 
  /////////////////////////////////////////////////////////////////////////////////////
  //Class Constructors-----------------------------------------------------------------
  /////////////////////////////////////////////////////////////////////////////////////
  Worm(Vec3D _newVecloc) { //Initialize 
    wormTrail = new ArrayList<Vec3D>();
    newVecloc = _newVecloc;
    headPos = _newVecloc;
  }
  /////////////////////////////////////////////////////////////////////////////////////
  //Class Primary Methods (Update)-----------------------------------------------------
  /////////////////////////////////////////////////////////////////////////////////////
  void update() {
    move();
    drawTrail();
    render();
  }
  /////////////////////////////////////////////////////////////////////////////////////
  ////Class Secondary Methods----------------------------------------------------------
  /////////////////////////////////////////////////////////////////////////////////////
  void move() {

    float noiseVal = noise(newVecloc.x/noiseScale,newVecloc.y/noiseScale)*noiseStrength; //NOISE IN THE X VALUE FOR THE Y POSITION
    float angle = noiseVal;//*TWO_PI;
    
    //Vec3D dir = speedVec.rotateAroundAxis(new Vec3D(0, 0, 1), angle);
    Vec3D dir = new Vec3D(cos(angle),sin(angle),0);
    dir.scaleSelf(speedVec.magnitude());
    
    //angle = noise(newVecloc.x/noiseScale,newVecloc.y/noiseScale) * noiseStrength;
    newVecloc.addSelf(dir); //use toxic lib vec library to add vector to current location

    headPos = new Vec3D(newVecloc.x, newVecloc.y, 0); //WORM HEAD POSITION
    wormTrail.add(new Vec3D(newVecloc.x, newVecloc.y, 0)); //TRAIL POSITION WITH NOISE INCLUDED
  }
  void render() {
    stroke(255);
    strokeWeight(5);
    point(headPos.x, headPos.y); //ADD PIXEL ON WORM HEAD
  }
  void drawTrail() {
    noFill();
    strokeWeight(1);
    stroke(125,255,0,150);
    beginShape();
    for (int i = 0; i<wormTrail.size (); i++) {
      Vec3D pos = new Vec3D (wormTrail.get(i));
      if (i == 0 || i == wormTrail.size()-1) {
        curveVertex(pos.x, pos.y);
      }
      curveVertex(pos.x, pos.y);
    }
    endShape();
    //ArrayList<Vec3D>wormTrail;
    //wormTrail.clear();
  }
}
Update
  • Share