3D处理中心周围的物体旋转

时间:2012-10-27 10:31:28

标签: 3d rotation processing

我正试图通过X轴围绕其中心旋转三面物体。 我正在0,0建造单面中心。我可以围绕它的中心旋转它,但是当我尝试旋转“整个”对象时,它不再起作用了。我该怎么办?

float a = 0;

void setup() {
  size(400, 400, P3D);
}

void draw() {
  background(0);
  noStroke();
  lights();
  pushMatrix();
  translate(width/2, height/2, -100);
  a = a + 0.01;
  rotateX(a);
  beginShape(QUADS);

  vertex(-100, -100, 0);
  vertex(100, -100, 0);
  vertex(100, 100, 0);
  vertex(-100, 100, 0);

  vertex(-100, 100, 0);
  vertex(100, 100, 0);
  vertex(100, 0, - 170);
  vertex(-100, 0, - 170);

  vertex(-100, - 100, 0);
  vertex(100, - 100, 0);
  vertex(100, 0, - 170);
  vertex(-100, 0, - 170);

  endShape();
  popMatrix();
}

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你需要在z轴上绘制对象的中心,看看是否是你想要的:

(只改变每个顶点的z参数)

float a = 0;

void setup() {
  size(400, 400, P3D);
}

void draw() {
  background(0);
  noStroke();
  lights();
  pushMatrix();
  translate(width/2, height/2, -100);
  a = a + 0.01;
  rotateX(a);
  beginShape(QUADS);

  vertex(-100, -100, 85);
  vertex(100, -100, 85);
  vertex(100, 100, 85);
  vertex(-100, 100, 85);


  vertex(-100, 100, 85);
  vertex(100, 100, 85);
  vertex(100, 0, - 85);
  vertex(-100, 0, - 85);

  vertex(-100, - 100, 85);
  vertex(100, - 100, 85);
  vertex(100, 0, - 85);
  vertex(-100, 0, - 85);

  endShape();

  popMatrix();
}