处理键盘事件上的旋转三角形

时间:2017-02-01 03:57:49

标签: rotation processing

我想旋转我的三角形

我的代码在所有情况下都不起作用。

仅适用于此情况

triangle ( - 10, + 26, 0, -25, + 10, + 26);

所以当我点击向上,向下,向左和向右键时,我应该在适当的位置旋转我的三角形。

我不确定这是最好的方法,但到目前为止我确实喜欢这个

这是代码

  float X1 = 200;
  float Y1 = 200;

  float X2 = 220;
  float Y2 = 160;

  float X3 = 240;
  float Y3 = 200; 

void setup() {
  background(2);
  size(400, 400);

}

void draw() {

  background(0);


  // background (0); 
  smooth();
  fill(255);
  translate(width/2, height/2); 
  rotate(radians(angle)); 
  triangle ( X1, Y1,  X2, Y2, X3, Y3);

  //triangle ( - 10, + 26, 0, -25, + 10, + 26); This code works

}


int angle = 0;
void keyPressed() {


  switch (keyCode)
  {
    case UP:

    angle +=90;

      break;
    case DOWN:

     angle +=180;

      break;
    case LEFT:

     angle +=90;

      break;
    case RIGHT:

       angle +=-90;

      break;

    default:
      break;
  }

}

1 个答案:

答案 0 :(得分:0)

想想你正在使用的坐标。

首先,您正在转换到屏幕中心。这意味着您的坐标将全部相对于该位置而不是屏幕的左上角。

这就是你的变量不起作用的原因。看起来它们相对于屏幕的左上角,而不是屏幕的中心。

要解决您的问题,您将不得不重新定义您的变量,以便它们相对于屏幕的中心。

以这种方式思考:您正在翻译到屏幕的中心,这意味着您的新来源位于200,200。然后你在200,200画一个点。但这一点是相对于屏幕的中心,所以你真的是在400,400绘制它,它离窗口的边缘。这就是你无法看到它的原因。你真的应该在0,0上绘制它,因为你已经在那里翻译了它,它将显示为200,200