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()機能を使ってみませんか?


編集:

コードの問題は、すでにラジアンであるradians()値を関数に渡していることです。QUARTER_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 に答える