processingで、3d空間に配置したポイント同士の距離を測って線で繋ぎたい
ArrayListに追加したPointクラスをそれぞれ距離を測る段階で以下のようなエラーが出てしまいます。
"The type of the expression must be an array type but it resolved to ArrayList"
pointを敷き詰める段階までは出来ましたが、ここで止まってしまいました。
どこが間違っているのか分かりません。宜しくお願いします。
ArrayList<Point> points = new ArrayList<Point>();
void setup(){
size(600,600,P3D);
for(float i=20;i<width-20;i+=20){ //x y平面状にpointを敷き詰めるための二重ループ
for(float j=20;j<height;j+=20){
float z = 0; //z座標は全て0
points.add(new Point(i,j,z)); //ArrayListにaddしていく
}
}
}
void draw(){
background(230,200,120);
for(Point p : points){ //for文でpointsを読み込んでdisplayを呼び出す
p.display();
}
drawLine(); //drawLineをする
}
void drawLine(){
for(int i=0;i<points.size();i++){ //ArrayListの中身を読み込んでそれぞれを計算する
for(int j=i+1;j<points.size();j++){ //計算がダブらないようにj=i+1
float d = dist( //距離を測る
points[i].x, //←ここに例のエラーが出ます。
points[i].y,
points[i].z,
points[j].x,
points[j].y,
points[j].z
);
if(d < 50){
line( //ラインを引く
points[i].x,
points[i].z,
points[i].y,
points[j].x,
points[j].y,
points[j].z
);
}
}
}
}
class Point{ //x,y,zの位置を管理するクラス
float x,y,z;
Point(float x_,float y_,float z_){
x = x_;
y = y_;
z = z_;
}
void display(){
stroke(0);
strokeWeight(2);
point(x,y,z);
}
}