スパイラルを作成するためのコードは良い考えです。回転したテキストを作成する 1 つの方法は、rotate()をtext()と組み合わせて使用することです。for ループがあり、文字配列を反復処理し、半径を増やして、そのようにテキストを描画します。rotate()
累積効果があることに注意してください。何かのようなもの:
String str = "asdflkkjsahfdlkadshflkahdslkfajsdf";
float radius = 0;
//so we are rotating around the center, rather than (0,0):
translate(width/2, height/2);
for (int i = 0; i < str.length(); i++) {
radius += 2;
// taken out because of non-constant spacing at large radius:
//rotate(0.5);
// this should give constant spacing, no matter the radius
// change 10 to some other number for a different spacing.
rotate(10/radius);
// drawing at (0,radius) because we're drawing onto a rotated canvas
text(str.charAt(i), 0, radius);
}
角度の変化を半径の関数にしたい場合があります。これは、半径が大きいと、文字が非常に離れて配置されるためです。これを行う 1 つの方法は、式 を使用することですs = rθ
。ここで、s は弧の長さ (この場合は文字間の距離)、r は半径、θ は角度の変化です。半径に関係なく、文字間の距離を一定にしたい場合、θ は 1/r に比例する必要があります。もちろん、ハードコードされた値を好みに合わせて調整することもできます。
また、rotate()
とtranslate()
メソッドは の最後で元に戻されるdraw()
ので、このコードの後に何もしない場合は、そのままにしておいてかまいません。後でさらに描画したい場合は、他のものを描画する前に手動で回転と移動を元に戻す必要があります。
編集:文字を回転させ、らせん状に配置するだけでなく、通常の向きにしたいと思っていたことに気づきました。その場合、既存のコードを使用して、もちろん適切なパラメータで を にellipse(...)
置き換えることができます。text(str.charAt(...)...)