首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在处理过程中使用2DArray创建类?是否强制使用括号符号?

如何在处理过程中使用2DArray创建类?是否强制使用括号符号?
EN

Stack Overflow用户
提问于 2014-03-20 13:38:38
回答 1查看 44关注 0票数 0

我从几个小时以来一直坐在我的立方体教室里。我想创造一个可转换的立方体。为此,我需要点和线,我可以转换与矩阵乘法。

因此,首先我声明我的数组,然后用值构造它们。我要用括号符号吗?我的错误在哪里?

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

代码语言:javascript
复制
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);
  }
}

Eclipse和ProcessingIDE都抱怨数组的构造。其他一切都在建造中。提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-20 14:01:11

将像vertArray[0] = new Vertex(50.0, 50.0, 0.0, 1.0);这样的行放入构造函数中。

或者,以这种方式对vertArray进行非关税化:

代码语言:javascript
复制
// 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)
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22534725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档