使用处理-我编写了一个在地图上绘制路径的代码。路径有四个不同的点。我想在地图上创建其他路径,因此当我将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);
}
}