当前位置: 首页 > 知识库问答 >
问题:

处理-来自类的数组

程飞星
2023-03-14
Cube myCube;
int x;
void setup(){
size(800,800,P3D);
myCube = new Cube();

}

void draw(){

myCube.display();

}



class Cube{
 PImage tex, tex1, tex2, tex3, tex4, tex5; 

void display(){
  background(0);
  noStroke();
  translate(100+x,100+x, 0);
  rotateY(map(mouseX, 0, width, 0, PI));
  rotateX(map(mouseY, 0, height, 0, PI));
  scale(50);
  tex = loadImage("image0.jpg");
  tex1 = loadImage("image1.jpg");
  tex2 = loadImage("image2.jpg");
  tex3 = loadImage("image3.jpg");
  tex4 = loadImage("image4.jpg");
  tex5 = loadImage("image5.jpg");
  textureMode(NORMAL);

beginShape(QUADS);
  texture(tex);

  // +Z "front" face
  vertex(-1, -1, 1, 0, 0);
  vertex( 1, -1, 1, 1, 0);
  vertex( 1, 1, 1, 1, 1);
  vertex(-1, 1, 1, 0, 1);
  endShape();
  beginShape(QUADS);
  // -Z "back" face
  texture(tex1);
  vertex( 1, -1, -1, 0, 0);
  vertex(-1, -1, -1, 1, 0);
  vertex(-1, 1, -1, 1, 1);
  vertex( 1, 1, -1, 0, 1);

  endShape();
  beginShape(QUADS);
  // +Y "bottom" face
  texture(tex2);
  vertex(-1, 1, 1, 0, 0);
  vertex( 1, 1, 1, 1, 0);
  vertex( 1, 1, -1, 1, 1);
  vertex(-1, 1, -1, 0, 1);

  endShape();
  beginShape(QUADS);
  // -Y "top" face
  texture(tex3);
  vertex(-1, -1, -1, 0, 0);
  vertex( 1, -1, -1, 1, 0);
  vertex( 1, -1, 1, 1, 1);
  vertex(-1, -1, 1, 0, 1);

  endShape();
  beginShape(QUADS);
  // +X "right" face
  texture(tex4);
  vertex( 1, -1, 1, 0, 0);
  vertex( 1, -1, -1, 1, 0);
  vertex( 1, 1, -1, 1, 1);
  vertex( 1, 1, 1, 0, 1);

  endShape();
  beginShape(QUADS);
  // -X "left" face
  texture(tex5);
  vertex(-1, -1, -1, 0, 0);
  vertex(-1, -1, 1, 1, 0);
  vertex(-1, 1, 1, 1, 1);
  vertex(-1, 1, -1, 0, 1);
  endShape();

}
}

这是凯文帮助后的代码。

ArrayList<Cube> myCubes = new ArrayList<Cube>();

void setup(){
   size(800,800,P3D);
   frameRate(60);
   for(int i = 0; i < 10; i++){
      myCubes.add(new Cube());
   }
}

void draw(){
   for(Cube myCube : myCubes){
      myCube.display();
   }
}

class Cube{
   PImage tex, tex1, tex2, tex3, tex4, tex5;
   float x;
   float y;
   float scale;

public Cube(){
  this.x = random(width);
  this.y = random(height);
  this. scale = random(10, 50);
}

void display(){
  background(0);
  noStroke();
  pushMatrix();
  background(0);
  noStroke();
  translate(x,y, 0);
  rotateY(map(mouseX, 0, width, 0, PI));
  rotateX(map(mouseY, 0, height, 0, PI));
  scale(scale);
  tex = loadImage("image0.jpg");
  tex1 = loadImage("image1.jpg");
  tex2 = loadImage("image2.jpg");
  tex3 = loadImage("image3.jpg");
  tex4 = loadImage("image4.jpg");
  tex5 = loadImage("image5.jpg");
  textureMode(NORMAL);

beginShape(QUADS);
  texture(tex);

  // +Z "front" face
  vertex(-1, -1, 1, 0, 0);
  vertex( 1, -1, 1, 1, 0);
  vertex( 1, 1, 1, 1, 1);
  vertex(-1, 1, 1, 0, 1);
  endShape();
  beginShape(QUADS);
  // -Z "back" face
  texture(tex1);
  vertex( 1, -1, -1, 0, 0);
  vertex(-1, -1, -1, 1, 0);
  vertex(-1, 1, -1, 1, 1);
  vertex( 1, 1, -1, 0, 1);

  endShape();
  beginShape(QUADS);
  // +Y "bottom" face
  texture(tex2);
  vertex(-1, 1, 1, 0, 0);
  vertex( 1, 1, 1, 1, 0);
  vertex( 1, 1, -1, 1, 1);
  vertex(-1, 1, -1, 0, 1);

  endShape();
  beginShape(QUADS);
  // -Y "top" face
  texture(tex3);
  vertex(-1, -1, -1, 0, 0);
  vertex( 1, -1, -1, 1, 0);
  vertex( 1, -1, 1, 1, 1);
  vertex(-1, -1, 1, 0, 1);

  endShape();
  beginShape(QUADS);
  // +X "right" face
  texture(tex4);
  vertex( 1, -1, 1, 0, 0);
  vertex( 1, -1, -1, 1, 0);
  vertex( 1, 1, -1, 1, 1);
  vertex( 1, 1, 1, 0, 1);

  endShape();
  beginShape(QUADS);
  // -X "left" face
  texture(tex5);
  vertex(-1, -1, -1, 0, 0);
  vertex(-1, -1, 1, 1, 0);
  vertex(-1, 1, 1, 1, 1);
  vertex(-1, 1, -1, 0, 1);
  endShape();
  popMatrix();




}
}

共有1个答案

鲜于念
2023-03-14

首先,您必须使多维数据集类的每个实例都显示在不同的位置,否则您将无法判断是否有多个多维数据。类似这样的事情:

class Cube{
   PImage tex, tex1, tex2, tex3, tex4, tex5;
   float x;
   float y;
   float scale;

public Cube(){
   this.x = random(width);
   this.y = random(height);
   this. scale = random(10, 50);
}

void display(){
  pushMatrix();
  noStroke();
  translate(x,y, 0);
  rotateY(map(mouseX, 0, width, 0, PI));
  rotateX(map(mouseY, 0, height, 0, PI));
  scale(scale);
  //rest of your code
  popMatrix();

请注意,我添加了对pushmatrix()popmatrix()的调用,这样您的平移和旋转就不会堆叠。

那么您就可以轻松地使用数组而不是单个实例:

Cube[] myCubes = new Cube[10];

void setup(){
   size(800,800,P3D);
   for(int i = 0; i < myCubes.length; i++){
      myCubes[i] = new Cube();
   }
}

void draw(){
   backgrond(0);
   for(Cube myCube : myCubes){
      myCube.display();
   }
}
ArrayList<Cube> myCubes = new ArrayList<Cube>();

void setup(){
   size(800,800,P3D);
   for(int i = 0; i < 10; i++){
      myCubes.add(new Cube());
   }
}

void draw(){
   for(Cube myCube : myCubes){
      myCube.display();
   }
}
ArrayList<Cube> myCubes = new ArrayList<Cube>();

void setup() {
  size(800, 800, P3D);
  frameRate(60);
  for (int i = 0; i < 10; i++) {
    myCubes.add(new Cube());
  }
}

void draw() {
  background(0);
  for (Cube myCube : myCubes) {
    myCube.display();
  }
}

class Cube {
  PImage tex, tex1, tex2, tex3, tex4, tex5;
  float x;
  float y;
  float scale;

  public Cube() {
    this.x = random(width);
    this.y = random(height);
    this. scale = random(10, 50);

    tex = loadImage("image0.jpg");
    tex1 = loadImage("image1.jpg");
    tex2 = loadImage("image2.jpg");
    tex3 = loadImage("image3.jpg");
    tex4 = loadImage("image4.jpg");
    tex5 = loadImage("image5.jpg");
  }

  void display() {

    noStroke();
    pushMatrix();
    noStroke();
    translate(x, y, 0);
    rotateY(map(mouseX, 0, width, 0, PI));
    rotateX(map(mouseY, 0, height, 0, PI));
    scale(scale);

    textureMode(NORMAL);

    beginShape(QUADS);
    texture(tex);

    // +Z "front" face
    vertex(-1, -1, 1, 0, 0);
    vertex( 1, -1, 1, 1, 0);
    vertex( 1, 1, 1, 1, 1);
    vertex(-1, 1, 1, 0, 1);
    endShape();
    beginShape(QUADS);
    // -Z "back" face
    texture(tex1);
    vertex( 1, -1, -1, 0, 0);
    vertex(-1, -1, -1, 1, 0);
    vertex(-1, 1, -1, 1, 1);
    vertex( 1, 1, -1, 0, 1);

    endShape();
    beginShape(QUADS);
    // +Y "bottom" face
    texture(tex2);
    vertex(-1, 1, 1, 0, 0);
    vertex( 1, 1, 1, 1, 0);
    vertex( 1, 1, -1, 1, 1);
    vertex(-1, 1, -1, 0, 1);

    endShape();
    beginShape(QUADS);
    // -Y "top" face
    texture(tex3);
    vertex(-1, -1, -1, 0, 0);
    vertex( 1, -1, -1, 1, 0);
    vertex( 1, -1, 1, 1, 1);
    vertex(-1, -1, 1, 0, 1);

    endShape();
    beginShape(QUADS);
    // +X "right" face
    texture(tex4);
    vertex( 1, -1, 1, 0, 0);
    vertex( 1, -1, -1, 1, 0);
    vertex( 1, 1, -1, 1, 1);
    vertex( 1, 1, 1, 0, 1);

    endShape();
    beginShape(QUADS);
    // -X "left" face
    texture(tex5);
    vertex(-1, -1, -1, 0, 0);
    vertex(-1, -1, 1, 1, 0);
    vertex(-1, 1, 1, 1, 1);
    vertex(-1, 1, -1, 0, 1);
    endShape();
    popMatrix();
  }
}
 类似资料:
  • 问题内容: 我有一个主要的Activity类,其中包含大量的代码/数据。因此,我想使其简短易懂,因此我想创建一个.java文件,该文件可按要求处理某些功能。喜欢 并显示非活动类的Toast。所以我的问题是如何在非活动状态下处理/初始化按钮?我们可以从将上下文从活动传递到非活动类中获取ID吗? 问题答案: 试试这个 对我有用 。也可以帮助您! NonActivityClass: 主要活动:

  • 问题内容: 我试图让bash处理来自管道的stdin的数据,但是没有运气。我的意思是以下任何一项工作: 我希望输出在哪里。我试过用“”引号括住也不起作用。 问题答案: 采用 您 可以像这样欺骗从管道中接受: 甚至编写这样的函数: 但是没有意义-您的变量分配可能不会持续!管道可能会产生一个子外壳,其中环境是通过值而不是通过引用继承的。这就是为什么不打扰管道输入的原因- 它是未定义的。 仅供参考,ht

  • 我正在从事一个项目,该项目使用处理从文件中读取数据,然后使用串行将这些数据发送到arduino Uno板,然后将这些值提供给arduino braccio braccio。ServoMovement()函数,根据它们移动机械臂。然而,每当我运行代码时,我总是在函数中输入错误的值,并且手臂以一种奇怪的方式移动,我测试了相同的代码,并试图点亮一个led,但出于某种原因,它工作正常。 Arduino代码

  • 问题内容: 我刚刚开始使用BoneCP,这是我第一次使用连接池。对于应该如何使用它,我有些困惑。当前,我将BoneCP对象保存为静态变量,因此可以在不同的连接之间使用它。 连接完成后,用关闭。 我应该这样做,还是不应该关闭它以使其能够被池重用? 这是我当前获得连接的实现: 这似乎是正确的,还是我误解了我应该如何使用BoneCP? 问题答案: 除了使您的私有静态最终变量和将init更改为静态块(或者

  • 问题内容: 我正在尝试使用Java的类来运行大量具有固定数量线程的重量级任务。每个任务都有很多地方,在这些地方可能会由于异常而失败。 我已经继承了子类,并且重写了应该提供运行任务时遇到的任何未捕获异常的方法。但是,我似乎无法使其工作。 例如: 该程序的输出是“一切都很好-情况正常!” 即使唯一提交给线程池的Runnable引发异常。任何线索这里发生了什么? 谢谢! 问题答案: 提交Runnable

  • 问题内容: 我正在尝试使用正则表达式搜索网页,但出现以下错误: TypeError:无法在类似字节的对象上使用字符串模式 我知道为什么urllib.request.urlopen()返回一个字节流,因此,至少在我看来,re不知道要使用的编码。在这种情况下我该怎么办?有没有办法在urlrequest中指定编码方法,或者我需要自己重新编码字符串?如果是这样,我想做什么,我假设我应该从标题信息中读取编码