2012-02-27 13 views
1

draw()機能でこのコードを使用して処理で作成したグラフィックプログラムに縦書きのテキストを書き込もうとしました。処理中に回転が奇妙なのはなぜですか?

// Translate to where I want text to be. 
    translate(20., 30.); 

    // Center align text 
    textAlign(CENTER); 

    // Rotate text-to-be written by 270 degrees to make it vertical. 
    rotate(270.); 

    // Write vertical text. 
    text("Some Vertical Text", 0, 0); 

    // Undo rotation and translation. 
    rotate(-270.); 
    translate(-20., -30.); 

ただし、このコードではテキストを垂直方向に回転させません。実際、書かれたテキストは、縦にも横にも傾かない。

何が起こっていますか?

答えて

2

ラジアンで角度を指定する必要があります。代わりにrotate(PI/2.0*3)を試してください。ラジアンを使用したくない場合は、radians(x)関数で変換することができます。最終的な結果はrotate(radians(270))のようになります。

ああ、一般的にはpushMatrix()を使用して現在の変換/回転/状態を保存し、popMatrixを使用して後で元に戻すのではなく、復元することをお勧めします。回転すると、小さな丸め誤差が発生し、すばやく累積することがあります。

+0

ありがとうございます! 'rotate(3 * PI/2)'はテキストを正しく回転させました。また、行列スタックの使用に関する助言に感謝します。そうすれば、グラフィックプログラミングでは多くの労力を節約できます(より正確です)。 – dangerChihuahua007

関連する問題