テキスト(文字)を螺旋状にサイズを変えて配置する

■プログラム説明(ソースコード説明)
 螺旋も円の計算式に従って文字の座標を決めます。円の計算式は以下のものを使用しています。

X座標 = Math.sin(ラジアン) * 半径
Y座標 = Math.cos(ラジアン) * 半径

 1文字分の角度は360度を文字数で割ります。角度からラジアンに変換するには「角度×円周率÷180」になります。座標を移動させるにはtransltate()を使います。次に円の半径を少し大きくします。これを文字数分繰り返すと文字が螺旋状に配置されます。文字サイズはtextRange()を使いテキストオブジェクトを作成characters配列を使い文字単位でアクセスします。sizeプロパティに文字サイズ(単位はポイント)を指定し、少しずつ文字サイズを大きくしていきます。


■ソースコード
str = "文字列が螺旋状に沿って自動的に配置されます。手作業では簡単そうで面倒な処理です。";
r = 10; // 半径
rd = 4; // 螺旋半径の加算値
fSize = 4; // 文字サイズの初期値
fd = 1; // 文字サイズの拡大値
maxRot = 720; // 何回転するか
docObj = activeDocument;
for (i=0; i<str.length; i++)
{
n = (i * (maxRot / str.length)) * Math.PI / 180;
x = Math.sin(n) * r;
y = Math.cos(n) * r;
r = r + rd;
txtObj = docObj.textFrames.add();
txtObj.contents = str.charAt(i);
txtObj.characters[0].size = fSize;
txtObj.translate(x,y);
fSize = fSize + fd;
}


■使い方
1:描画するドキュメントをアクティブにします。
2:ファイルメニューからスクリプトを実行します。
3:文字が螺旋状に配置されます。


■ポイント
 螺旋楕円に沿って配置する場合には以下のように縦横別々の半径にします。

str = "文字列が螺旋状に沿って自動的に配置されます。手作業では簡単そうで面倒な処理です。";
rx = 10; // 横半径
ry = 5; // 横半径
rdx = 4; // 螺旋横半径の加算値
rdy = 2; // 螺旋縦半径の加算値
fSize = 4; // 文字サイズの初期値
fd = 0.5; // 文字サイズの拡大値
maxRot = 720; // 何回転するか
docObj = activeDocument;
for (i=0; i<str.length; i++)
{
n = (i * (maxRot / str.length)) * Math.PI / 180;
x = Math.sin(n) * rx;
y = Math.cos(n) * ry;
rx = rx + rdx;
ry = ry + rdy;
txtObj = docObj.textFrames.add();
txtObj.contents = str.charAt(i);
txtObj.characters[0].size = fSize;
txtObj.translate(x,y);
fSize = fSize + fd;
}

■実際のスクリプトをダウンロード(sample.js.zip)