处理:函数旋转无法正常工作

时间:2017-08-22 20:01:12

标签: processing

你好我正在尝试使用line()和rotate()函数在处理中绘制一个正方形,但我可能有一些问题可能与rotate函数有关。 这是我绘制函数的代码:

void draw(){
   background(0);
   stroke(255);
   for(int i = 0; i < 4; i++){
       line(0, 0, GRID_SIZE, 0);
       translate(GRID_SIZE, 0);
       rotate(HALF_PI);
   }
}

结果:

The result

为什么即使我按PI / 2旋转,底线和左线也会倾斜? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

这是非常期待的行为。

请记住,在“现实生活中”,像PI和PI / 2这样的数字是无限长的。计算机无法保存无限长的数字,因此变量HALF_PI包含近似值。因此,当您按HALF_PI进行旋转时,实际上每次都会旋转一点“错误”。这个错误加起来,所以你得到的东西就像你所看到的那样。

由于像素是整数而不是float值,因此情况更糟。因此,如果您有一个Y位置为20.0000001的像素和另一个Y位置为19.9999999的像素,则它们将分别在2019呈现,所以即使真正的差异很小,你也会看到它们之间存在“大的”差异(1个整像素)。

如果您希望线条看起来更方正,那么只需使用Processing提供的rect()函数。