OWNED MEDIAウェブ制作に役立つコンテンツを発信中!

Illustratorでスクリプトを使って関数曲線のバラ曲線を描いてみる

今回はIllustratorのスクリプト機能を使って幾何学的な図形を描いていきます。先日、クライアントワークでデザイン素材を作成する際に、とても複雑な図形を作成する機会があり、普通にパスで描くには難しいと判断し、色々と調べてみるとその図形は「バラ曲線」と呼ばれるものだそうで、Illustratorでスクリプトを読み込ませて関数で描く方法で作成しました。その時の備忘録として残しておきたいと思います。   今回作成する図形はバラ曲線と呼ばれるもので数学に疎い私はあまりよくわかっていないのですが、、見た目が花のような形を描く平面座標上にある曲線とのことです。この曲線は関数によって座標が導き出されることで描かれており、ここではJavaScriptを使ってバラ曲線の座標を計算する関数を作成していきます。 【バラ曲線】 https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%A9%E6%9B%B2%E7%B7%9A   Illustratorでは各種スクリプトを読み込みことでパスを描画させることができる「スクリプト機能」があり、それを使うことで複雑な幾何学模様も正確に描画することができます。今回はバラ曲線を例に作成していますが、それ以外のものも関数さえ用意できれば色々と作成することができます。   それでは、まず読み込ませるスクリプトを用意していきます。JavaScriptで記述しますが新しいもの(ES6など)での表記はできない点に注意しておきます。まずキャンバス上のx座標とy座標が格納される配列を用意します。そして、バラ曲線の形を変えるための変数を3つ用意します。バラ曲線ではnとdの値によって色んな形に変化します。(詳しくは上記サイトを参考に)また複雑なものになってくると、周回数を重ねないと描けないものもあるので、その変数も用意しておきます。
var anchorPoint = [];
var n = 1, 
    d = 3, 
    l = 2;

// バラ関数の座標を計算
for (var angle = 0; angle <= 360; angle += 1) {
  var radian = angle * Math.PI * l / 180;
  var x = Math.sin(( n / d ) * radian) * Math.cos(radian);
  var y = Math.sin(( n / d) * radian) * Math.sin(radian);
  anchorPoint.push([x * 100, y * 100]);
}

// パスの描画処理
var documentObject = activeDocument;
var pathObject = documentObject.pathItems.add();
pathObject.setEntirePath(anchorPoint);
function setRGBColor(r, g, b){
  var color = new RGBColor();
  color.red = r;
  color.green = g;
  color.blue = b;
  return color;
}
pathObject.fillColor = setRGBColor(255, 0, 0); 
pathObject.filled = false;
pathObject.stroked = true;
pathObject.strokeWidth = 2;
  バラ関数の座標計算部分では1周(360度)の間の全ての角度のラジアン値を算出し、それを元に座標を導き出していきます。そのためループで処理を加えていきます。そして、xとy座標をそれぞれバラ曲線の条件に合わせて計算し、アンカーポイント用の配列に値を格納していきます。この時、座標は1px単位となるので、大きいサイズで書き出ししたい場合には適宜倍率をかけておくといいですね。   そして、算出したアンカーポイントを元にキャンバスへ描画していく処理を用意していきます。ここではIllustrator独自のメソッドを使っていくことで座標を元にキャンバスにパスとして描画できたり、パスの線の太さや塗りを指定することができます。ただし、色の指定はデフォルトで用意されいないため専用の関数を用意するか、RGBColorを使って直接指定してあげる必要があります。   これでスクリプトが完成しましたので、引き続きIllustrator上で作業を進めていきます。新規ドキュメントを作成したら、「ファイル」→「スクリプト」→「その他のスクリプト」を選択し、先ほど作成したスクリプトファイルを読み込みます。   そうするとこのように関数で計算された座標にパスとして描かれます。パスの塗りや線などもの設定しているとここで反映されているかと思います。   関数曲線で描かれたパスは、特性上どうしてもアンカーポイントが多くなってしまいます。そのままではわかりにくいですが、パスを変形する上で扱いづらい場面も出てきます。   そのため、「パスの単純化」の作業を行なっておくといいですね。要素を選択した状態で右クリックをして表示されるメニューから「単純化」を実施します。この際にアンカーポイントの数を調整できますが、基本はデフォルトの設定で大丈夫でしょう。   単純化することで、このように必要最小限のアンカーポイントに変更されます。これでパスの変形がしやすくなりましたね。パスのハンドルを使って調整できるようになります。   上記関数の変数の値を変えることで色んなバラ曲線の図形を描くことができます。複雑な幾何学図形もこのように関数を使うと正確に作成することができますね。私自身は残念ながら数学に詳しくないのですが、JavaScriptを活用してHTML上に描画するようなのも、また後日試してみたいと思います。  
  今回はIllustratorのスクリプト機能を使って関数曲線であるバラ曲線を描いてみました。デザイン素材や背景の模様として、またロゴマークの作成なんかにも役に立つのではないでしょうか。このような複雑な図形を作成できるのもIllustratorの強みですね。これを機に数学を勉強しなおしてみるのもいいかもしれませんね。。   (参考にさせて頂いたサイト) Rose(mathematics) イラレでもサインカーブなど数学的な曲線を描きたい!JSでできるじゃん!! 直線を作成する
  • はてなブックマーク
  • Pocket
  • Linkedin
  • Feedly

この記事を書いた人

Twitter

SPONSORED

    KEYWORD SEARCH

    RECENT POSTS

    合同会社デザインサプライ -DesignSupply. LLC-

    サイト制作・開発 / 各種デザイン制作 / ウェブプロモーション企画

    合同会社デザインサプライ(DesignSupply. LLC)

    Office:大阪府大阪市天王寺区清水谷町3-22
    Email:info@designsupply-web.com
    • Twitter
    • Github
    CONTACT USSCROLL TO TOP
      • Facebook
      • Twitter
      • Github
      • Instagram