0

这真的让我发疯,我知道我有点傻。为什么这条线不是45度?

    size(800, 600);
    background (30);  
    stroke(255);

    float r = 100;
    float a= 20+   r * cos(radians(QUARTER_PI))   ;
    float b= 20+   r * sin(radians(QUARTER_PI))   ;
    line(20,20,a,b);

我已经从一个更大的项目中简化了这段代码,如果我做了很多迭代,就会出现圆圈。我做了什么来制作角度刻度?

4

1 回答 1

0

我将从调试代码开始。由于传递给 的值,该线不是 45 度line()。通过打印 和 的值ab很明显这条线是从坐标 (20,20) 到大致 (119, 21) 绘制的。所以你告诉程序画一条直线。

print(a + "\n");  // returns 119.99
print(b);         // returns 21.37

如果你想画一个圆,为什么不使用这个ellipse()功能呢?


编辑:

您的代码的问题是您将 value 传递给radians()函数,该 valueQUARTER_PI已经以弧度表示。因此,您的问题可以通过以下任一方式解决:

// Pass in an amount of radians directly.
float r = 100;
float a = 20 + r * cos(QUARTER_PI);
float b = 20 + r * sin(QUARTER_PI);
line(20,20,a,b);

或者

// Pass in degrees converted to radians.
float r = 100;
float a = 20 + r * cos(radians(45));
float b = 20 + r * sin(radians(45));
line(20,20,a,b);
于 2012-12-28T22:28:35.957 回答