你好我正在尝试使用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);
}
}
结果:
为什么即使我按PI / 2旋转,底线和左线也会倾斜? 提前谢谢!
答案 0 :(得分:0)
这是非常期待的行为。
请记住,在“现实生活中”,像PI和PI / 2这样的数字是无限长的。计算机无法保存无限长的数字,因此变量HALF_PI
包含近似值。因此,当您按HALF_PI
进行旋转时,实际上每次都会旋转一点“错误”。这个错误加起来,所以你得到的东西就像你所看到的那样。
由于像素是整数而不是float
值,因此情况更糟。因此,如果您有一个Y位置为20.0000001
的像素和另一个Y位置为19.9999999
的像素,则它们将分别在20
和19
呈现,所以即使真正的差异很小,你也会看到它们之间存在“大的”差异(1个整像素)。
如果您希望线条看起来更方正,那么只需使用Processing提供的rect()
函数。