33396


ArrayListに追加したPointクラスをそれぞれ距離を測る段階で以下のようなエラーが出てしまいます。

"The type of the expression must be an array type but it resolved to
ArrayList"

pointを敷き詰める段階までは出来ましたが、ここで止まってしまいました。  
どこが間違っているのか分かりません。宜しくお願いします。

[code]

    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);
     }
    }
    
[/code]


CC BY-SA 3.0
2017-03-17T10:00:40.237
33391
2017-03-17T20:28:11.380
18870
question
processing
processingで、3d空間に配置したポイント同士の距離を測って線で繋ぎたい


`ArrayList`は配列(`Array`)とは少し違い、`points[i]`形式で`i`番目の要素を取得できません。`points.get(i)`を使います。

参考：[ArrayList](https://processing.org/reference/ArrayList.html) \-- Processing
2+ Reference


CC BY-SA 3.0
2017-03-17T20:28:11.380
33396
2017-03-17T20:28:11.380
19110
33391
answer