Java 如何在处理中使用2DArray创建类?括号符号是强制的吗?

Java 如何在处理中使用2DArray创建类?括号符号是强制的吗?,java,arrays,class,processing,Java,Arrays,Class,Processing,我在教室里坐了好几个小时。我想创建一个可转换的多维数据集。为此,我需要顶点和线,我可以用矩阵乘法变换 所以首先我声明数组,然后用值构造它们。我必须用括号表示吗?我的错在哪里 然后,我实现setter函数来更改数组,并实现一个转换函数来为转换后的顶点生成一个新数组。您将如何正确实施它?有什么建议吗 class Cube { private Vertex[] vertArray = new Vertex[8]; // create 8 vertexes for cube vert

我在教室里坐了好几个小时。我想创建一个可转换的多维数据集。为此,我需要顶点和线,我可以用矩阵乘法变换

所以首先我声明数组,然后用值构造它们。我必须用括号表示吗?我的错在哪里

然后,我实现setter函数来更改数组,并实现一个转换函数来为转换后的顶点生成一个新数组。您将如何正确实施它?有什么建议吗

class Cube {
  private Vertex[] vertArray = new Vertex[8];
    // create 8 vertexes for cube
    vertArray[0] = new Vertex(50.0, 50.0, 0.0, 1.0);
    vertArray[1] = new Vertex(150.0, 50.0, 0.0, 1.0);
    vertArray[2] = new Vertex(150.0, 150.0, 0.0, 1.0);
    vertArray[3] = new Vertex(50.0, 150.0, 0.0, 1.0);
    vertArray[4] = new Vertex(50.0, 50.0, -100.0, 1.0);
    vertArray[5] = new Vertex(150.0, 50.0, -100.0, 1.0);
    vertArray[6] = new Vertex(150.0, 150.0, -100.0, 1.0);
    vertArray[7] = new Vertex(50.0, 150.0, -100.0, 1.0);
  private Line[] lineArray = new Line[12];
    // 12 lines out of 8 vertexes
    // clockwise arrangement from top left, first front then back
    lineArray[0] = new Line(vertArray[0], vertArray[1]);
    lineArray[1] = new Line(vertArray[1], vertArray[2]);
    lineArray[2] = new Line(vertArray[2], vertArray[3]);
    lineArray[3] = new Line(vertArray[3], vertArray[0]);
    lineArray[4] = new Line(vertArray[0], vertArray[4]);
    lineArray[5] = new Line(vertArray[1], vertArray[5]);
    lineArray[6] = new Line(vertArray[2], vertArray[6]);
    lineArray[7] = new Line(vertArray[3], vertArray[7]);
    lineArray[8] = new Line(vertArray[4], vertArray[5]);
    lineArray[9] = new Line(vertArray[5], vertArray[6]);
    lineArray[10] = new Line(vertArray[6], vertArray[7]);
    lineArray[11] = new Line(vertArray[7], vertArray[4]);
  private Float[][] transfArray;
  private Vertex[] newVertArray;

  Cube() {
    this.setVertArray(this.vertArray);
    this.setLineArray(this.lineArray);
  }

  void setVertArray(Float vertArray[]) {
    this.vertArray = vertArray;
  }

  void setLineArray(Float lineArray[]) {
    this.lineArray = lineArray;
  }

  void setTransfArray(Float[][] transfArray) {
    this.transfArray = transfArray;   
  }

  void display() {
    for (int i=0; i<lineArray.length; i++) {
      lineArray[i].display();
    }
  }

  void transform() {
    // new vertex-array for transformed vertexes
    newVertArray = new Vertex[vertArray.length];
    // count rows of transformation matrix
    int transfColumns = this.transfArray[0].length;
    // check if matrix-multiplication is possible
    if (transfColumns != 4) {
      println("transformation Array " + transfColumns + " did not match homogenous coordinate.");
    }
    for (int h=0; h<vertArray.length; h++) {
      // iterate through vertArray
      // return new vertArray
      Float[] newCoordinateArray = new Float[4];
      for (int i=0; i<4; i++) {
        // iterate through each row of transfArray
        // return new Vertex
        float newCoordinate = 0.0;
        for (int j=0; j<4; j++) {
          // iterate through each value of transfArray-Row 
          // and multiply with Vertex, add to newCoordinate
          newCoordinate += (transfArray[i][0] * vertArray[h].x);
          newCoordinate += (transfArray[i][1] * vertArray[h].y);
          newCoordinate += (transfArray[i][2] * vertArray[h].z);
          newCoordinate += (transfArray[i][3] * vertArray[h].t);
        }
        newCoordinateArray[i] = newCoordinate;
        //print("newCoordinate = " + newCoordinate);
      }
      // asign values of newCoordinateArray to x, y, z or t
      Vertex newVertex = new Vertex(
        newCoordinateArray[0], // assign to x
        newCoordinateArray[1], // assign to y
        newCoordinateArray[2], // assign to z
        newCoordinateArray[3]  // assign to t
      );
      print(" newVertex = " + newVertex.x + " " +
        newVertex.y + " " + newVertex.z + " " + newVertex.t);
      newVertArray[h] = newVertex;
    }
    //print("newVertArray = " + newVertArray);
  }
}
类多维数据集{
私有顶点[]顶点数组=新顶点[8];
//为立方体创建8个顶点
vertArray[0]=新顶点(50.0,50.0,0.0,1.0);
vertArray[1]=新顶点(150.0,50.0,0.0,1.0);
vertArray[2]=新顶点(150.0,150.0,0.0,1.0);
vertArray[3]=新顶点(50.0,150.0,0.0,1.0);
vertArray[4]=新顶点(50.0,50.0,-100.0,1.0);
vertArray[5]=新顶点(150.0,50.0,-100.0,1.0);
vertArray[6]=新顶点(150.0,150.0,-100.0,1.0);
vertArray[7]=新顶点(50.0,150.0,-100.0,1.0);
专线[]lineArray=新线[12];
//8个顶点中的12条线
//从左上角顺时针排列,先前后后后
lineArray[0]=新行(vertArray[0],vertArray[1]);
lineArray[1]=新行(vertArray[1],vertArray[2]);
lineArray[2]=新行(vertArray[2],vertArray[3]);
lineArray[3]=新行(vertArray[3],vertArray[0]);
lineArray[4]=新行(vertArray[0],vertArray[4]);
lineArray[5]=新行(vertArray[1],vertArray[5]);
lineArray[6]=新行(vertArray[2],vertArray[6]);
lineArray[7]=新行(vertArray[3],vertArray[7]);
lineArray[8]=新行(vertArray[4],vertArray[5]);
lineArray[9]=新行(vertArray[5],vertArray[6]);
lineArray[10]=新行(vertArray[6],vertArray[7]);
lineArray[11]=新行(vertArray[7],vertArray[4]);
私有浮点[][]数组;
私有顶点[]新顶点数组;
多维数据集(){
this.setVertArray(this.vertArray);
this.setLineArray(this.lineArray);
}
void setVertArray(浮点vertArray[]){
this.vertary=vertArray;
}
无效设置线性阵列(浮动线性阵列[]){
this.lineArray=lineArray;
}
void setTransferArray(Float[][]transferArray){
this.transfArray=transfArray;
}
无效显示(){

对于(int i=0;i将
vertArray[0]=新顶点(50.0,50.0,0.0,1.0);
之类的线放入构造函数中

或者,通过以下方式初始化
vertArray

// create 8 vertexes for cube
private Vertex[] vertArray = new Vertex[8] {
  new Vertex(50.0, 50.0, 0.0, 1.0),
  new Vertex(150.0, 50.0, 0.0, 1.0),
  new Vertex(150.0, 150.0, 0.0, 1.0),
  new Vertex(50.0, 150.0, 0.0, 1.0),
  new Vertex(50.0, 50.0, -100.0, 1.0),
  new Vertex(150.0, 50.0, -100.0, 1.0),
  new Vertex(150.0, 150.0, -100.0, 1.0),
  new Vertex(50.0, 150.0, -100.0, 1.0)
};

嘿,谢谢。数组正在工作。你可以告诉我,我如何用预先制作的数组构造我的立方体对象,并用setter更新数组吗?虽然我读了很多,但我不太理解这个东西。好的。明白了!问题是setter的参数不是“Float vertary[]”,而是“Vertex[]vertArray'而不是'Float lineArray[],而是'Line[]lineArray'