数学曲線を描く

Illustratorには螺旋や円弧などの曲線が標準で描けるようにツールで用意されています。直線でも曲線でも難なく描けそうですが、サインカーブなど数式に従ったものはスクリプトを使わないと綺麗に描くことができません。数式で示される曲線に対しては、やはりスクリプトの方がはるかに便利です。
シンプルなところでサインカーブを描くスクリプトが以下のものです。

redColor = activeDocument.swatches["レッド"].color;
w = 1; // 横の拡大率
h = 100; // 縦の拡大率
step = 5; // 計算上の間隔
startP = 0; // 開始角度
endP = 360; // 終了角度
passData = [];
count = 0;
for (i=startP; i<=endP; i+=step)
{
r = i * Math.PI / 180;
y = Math.sin(r) * h;
x = i * w;
passData[count++]= [x, y];
}
docObj = activeDocument;
pObj = docObj.pathItems.add();
pObj.setEntirePath(passData);
pObj.filled = false; // 塗りなし
pObj.stroked = true; // 線あり
pObj.strokeWidth = 3; // 線幅3ポイント
pObj.strokeColor = redColor; // 線の色を指定(赤色)

スウォッチカラーを指定しているので色を変更したい場合には一番最初の行で指定しているスウォッチ名を変更してください。
横に書いてあるコメントが、変数/値の内容を示しています。1つ注意しないといけないのは計算上の間隔です。曲線を描くと書いていますが実際には直線を描いています。細かい点と点を直線で結ぶ事で曲線を表現しているのです。このため、間隔が粗いと曲線ではなくカクカクした感じになってしまいます。綺麗な曲線にしたい場合にはstepの値を小さくしてください。0.01といった小数値も指定することができます。ただし、あまりに細かくしてしまうとIllustratorが停止してしまったり極度に遅くなるので注意が必要です。

サインカーブだけでなくコサインカーブや、いろいろな数学曲線を描くことができます。コサインにしたい場合にはMath.sinをMath.cosにしてください。タンジェントの場合はMath.tanです。
いくつか組み合わせると面白い曲線を描く事もできます。

y = Math.sin(r) * h;
x = i * w;

y = Math.cos(r) * Math.sin(r) * h;
x = Math.cos(r) * w;

にしてみてください。蝶ネクタイのような感じの曲線が描かれます。数学曲線の計算式などはWebサイト上にたくさんありますので、いろいろ式を変更して描かせてみると面白いでしょう。




[サンプルをダウンロード]