使用Pvector和数组创建路径,需要帮助来调用数组

时间:2019-05-06 00:18:53

标签: arrays class processing

使用处理-我编写了一个在地图上绘制路径的代码。路径有四个不同的点。我想在地图上创建其他路径,因此当我将PVector Array放在该类中,然后尝试在原始代码中调用它时,我创建了自己的名为walker的类,仅显示路径的第一行。

我的图像是一张地图-不确定如何上传,因此,如果尝试这样做,则可以将图像取出。谢谢!

MAIN CODE: 

PImage bg;

PVector location;
PVector speed;

Walker[] walk = new Walker[20];

void setup() {

  bg = loadImage("map.png");
  image(bg,0,0,width, height);
  size(800,600);

 for(int i=0; i<walk.length; i++) {
  walk[i] = new Walker();
  }
}

void draw() {
  for(int i=0; i<walk.length; i++) {
  walk[i].move();
  if (i <walk.length) {walk[i].newSegment(); 
  }
}
}





********************************

class Walker {

PVector[] targets = new PVector[5];

float segment;


float speedFactor = 2;

int currentTarget = 1;

Walker() {
  targets[0] = new PVector(518,218);
  targets[1] = new PVector(367,146);
  targets[2] = new PVector(235,348);
  targets[3] = new PVector(386,418);
  targets[4] = new PVector(321,519);

 location = new PVector(targets[0].x, targets[0].y);
  speed = new PVector(0,0);
  newSegment();
}


void move(){

  location.add(speed);

   // test to see if walker has reached target, if so move to next target  
  if(location.dist(targets[currentTarget-1]) > segment) {
    if(currentTarget < targets.length - 1) {
      currentTarget++;
      newSegment();
    }
  }
  else {
    // draw the walker, but only if we haven't reached the end
    if(currentTarget < 5) {
      fill(255,0,0);
      noStroke();
      ellipse(location.x, location.y, 10,10);
    }
  }
}

void newSegment() {
  // calculate distance betwen current location and next target
  segment = targets[currentTarget].dist(targets[currentTarget-1]);

  // calculate new speed
  speed.x = targets[currentTarget].x - location.x;
  speed.y = targets[currentTarget].y - location.y;
  speed.div(segment / speedFactor);
}

}

0 个答案:

没有答案