处理三角函数代码不起作用

时间:2017-01-09 13:24:28

标签: java animation rotation processing trigonometry

我的处理代码基于Daniel Shiffman的 Nature Of Code 的振荡章节,主要是根据它的前进方向(鼠标)旋转动子的例子。 它不起作用,虽然我很确定它在某个地方有一个小错误。矩形只是飞到屏幕外面。 书中的例子(未完整):

void display() {
    float angle = velocity.heading2D;
    stroke(0); fill(175); pushMatrix(); rectMode(CENTER);              
    translate(location.x,location.y);
    rotate (angle); 
    rect(0,0,30,10);
    popMatrix();
}

我的代码:

void show() {
    angle = velocity.heading2D();
    rectMode(CENTER);
    pushMatrix();
    translate(location.x,location.y);
    rotate(angle);

    fill(255,20,20,150);
    rect(location.x,location.y,carSize,carSize);
    popMatrix();
}

设置并绘制:

Car car ;
void setup() {
    car = new Car();
}

void draw() {
    mouse = new PVector(mouseX,mouseY);
    background(255);
    car.show();
    car.move();
    car.update();
}

1 个答案:

答案 0 :(得分:1)

我终于明白了。而不是

 translate(location.x,location.y);  
 rect(location.x,location.y,40,40);  

必须是:

 translate(location.x,location.y);  
 rect(0,0,40,40);    

因为翻译已经将原点指向对象的位置,而这就是我想要绘制它的位置(0,0)。