前回は、Illustratorでスクリプトを用いて数学的な曲線を描かせましたが、Photoshopにも数学的な曲線を描くツールは用意されていません。ということで、今回はPhotoshopで数学的曲線を描くスクリプトです。
基本的には前回のIllustratorのものと同じです。が、同じAdobe製品でもアプリケーション独自部分には互換性がないので(当然ですが)、同じスクリプトでは動作しません。
Photoshopの場合、数学的曲線を描かせるやりかたとしては、選択範囲を作成して塗りつぶしていく方法と、パスを描いてそのパスにブラシや鉛筆の形状を適用する方法があります。サンプルでは、Illustrator同様にパスを作成し、パスにそってブラシで曲線を描きます。
基本的には前回のIllustratorのものと同じです。が、同じAdobe製品でもアプリケーション独自部分には互換性がないので(当然ですが)、同じスクリプトでは動作しません。
Photoshopの場合、数学的曲線を描かせるやりかたとしては、選択範囲を作成して塗りつぶしていく方法と、パスを描いてそのパスにブラシや鉛筆の形状を適用する方法があります。サンプルでは、Illustrator同様にパスを作成し、パスにそってブラシで曲線を描きます。
w = 1; // 横の拡大率
h = 100; // 縦の拡大率
step = 5; // 計算上の間隔
startP = 0; // 開始角度
endP = 360; // 終了角度
offsetX = 100; // X座標のオフセット
offsetY = 200; // Y座標のオフセット
passData = [];
lineData = [];
count = 0;
for (i=startP; i< =endP; i+=step)
{
r = i * Math.PI / 180;
y = Math.sin(r) * h;
x = i * w;
x = x + offsetX;
y = y + offsetY;
passData[count]= new PathPointInfo();
passData[count].kind = PointKind.CORNERPOINT;
passData[count].anchor = [x, y];
passData[count].leftDirection = [x, y];
passData[count].rightDirection = [x, y];
count++;
}
lineData[0] = new SubPathInfo();
lineData[0].operation = ShapeOperation.SHAPEADD;
lineData[0].closed = false;
lineData[0].entireSubPath = passData;
docObj = activeDocument;pObj = docObj.pathItems.add("Sin", lineData);
pObj.strokePath(ToolType.BRUSH);
pObj.remove();
曲線を変更するのであれば
y = Math.sin(r) * h;
x = i * w;
の数式を
y = Math.cos(r) * Math.sin(r) * h;
x = Math.cos(r) * w;
のようにすると、いろいろな曲線を描くことができます。また、Illustratorと異なり不要になったパスは消していますが、もしパスを残しておきたい場合には一番最後の行にある
pObj.remove();
を削除してください。これでパスデータを残すことができます。
【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>
7月27日に秀和システムから「Ajax実践テクニック」が発売されました。あと、Adobe Spryの解説などは以下のページにある「Ajaxを勉強しよう」の19章で行なっています。
< http://www.openspc2.org/JavaScript/Ajax/Ajax_study/
>
h = 100; // 縦の拡大率
step = 5; // 計算上の間隔
startP = 0; // 開始角度
endP = 360; // 終了角度
offsetX = 100; // X座標のオフセット
offsetY = 200; // Y座標のオフセット
passData = [];
lineData = [];
count = 0;
for (i=startP; i< =endP; i+=step)
{
r = i * Math.PI / 180;
y = Math.sin(r) * h;
x = i * w;
x = x + offsetX;
y = y + offsetY;
passData[count]= new PathPointInfo();
passData[count].kind = PointKind.CORNERPOINT;
passData[count].anchor = [x, y];
passData[count].leftDirection = [x, y];
passData[count].rightDirection = [x, y];
count++;
}
lineData[0] = new SubPathInfo();
lineData[0].operation = ShapeOperation.SHAPEADD;
lineData[0].closed = false;
lineData[0].entireSubPath = passData;
docObj = activeDocument;pObj = docObj.pathItems.add("Sin", lineData);
pObj.strokePath(ToolType.BRUSH);
pObj.remove();
曲線を変更するのであれば
y = Math.sin(r) * h;
x = i * w;
の数式を
y = Math.cos(r) * Math.sin(r) * h;
x = Math.cos(r) * w;
のようにすると、いろいろな曲線を描くことができます。また、Illustratorと異なり不要になったパスは消していますが、もしパスを残しておきたい場合には一番最後の行にある
pObj.remove();
を削除してください。これでパスデータを残すことができます。
【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>
7月27日に秀和システムから「Ajax実践テクニック」が発売されました。あと、Adobe Spryの解説などは以下のページにある「Ajaxを勉強しよう」の19章で行なっています。
< http://www.openspc2.org/JavaScript/Ajax/Ajax_study/
>
- Ajax実践テクニック
- 高橋 登史朗 古籏 一浩
- 秀和システム 2006-07
- Ajax逆引きクイックリファレンスWeb2.0対応for Windows & Macintosh
- 古籏 一浩
- 毎日コミュニケーションズ 2006-03
- おすすめ平均
- 知ってる人は使いやすい
- サンプル多いのが良い
- JavaScript初心者にはちょっとわかりづらい
by G-Tools , 2006/07/31