在处理中旋转Rubik的多维数据集面

时间:2019-11-15 12:21:25

标签: rotation processing rubiks-cube

我知道这个问题已经被问过很多次了,但是我看不到有人试图在处理3D中旋转立方体的面的任何问题(对不起,如果我没有看到的话)。我用三元组制作了一个魔方,用于循环绘制多维数据集。

public class CuboDiRubik
{
  private int l; // Lato del cubo

  /**
 1. Costruttore del cubo
 2. @param l lato del cubo
   */
  CuboDiRubik(int l)
  {
    this.l = l;
  }

  public void disegna()
  {
    int i,j,k;
    for (k = -1; k < 2; k++)
    {
      pushMatrix();
      translate(0,0,k*(l));
      for (i = -1; i < 2; i++)
      {
        pushMatrix();
        translate(0,i*(l));
        for (j = -1; j < 2; j++)
        {
          pushMatrix();
          rotateY(angY);
          translate(j*l,0);
          cubo(l/2);
          popMatrix();
        }
        popMatrix();
      }
      popMatrix();
    }
  }

您可以看到我尝试使用rotateY(),但是它不起作用(它将旋转多维数据集的所有级别)。有什么想法可以轮换吗?

cubo(int side):用于制作立方体的功能
disegna():魔方的绘制
l:魔方立方体的一面

我使索引从-1开始,因为我首先创建了中心立方体,然后又创建了其他立方体。

这是主要代码:

float ang = 0.0;
float angX = 0.0;
float angY = 0.0;
color red = color(255,0,0);
color green = color(0,255,0);
color blue = color(0,0,255);
color yellow = color(255,255,0);
color white = color(255,255,255);
color orange = color(255,128,0);
CuboDiRubik cube_rubik;

/**
 + Funzione eseguita all'avvio del programma
 */
void setup()
{
  size(640, 480, P3D);
  shapeMode(CENTER);
  cube_rubik = new CuboDiRubik(50);
}

/**
 * Funzione che disegna le forme
 */
void draw()
{
  ang += 0.02;
  background(255);
  translate(width/2,height/2);
  rotateY(ang);
  rotateX(ang);
  cube_rubik.disegna();
}

在主draw()中,旋转立方体以清楚地看到它。

0 个答案:

没有答案