クリエイター手抜きプロジェクト[237]Illustrator CS/CS2/CS3/CS4編 対数ガイドを作成する
── 古籏一浩 ──

投稿:  著者:


対数値をプロットしたい場合など、対数ガイドがあると便利です。以下のスクリプトは、片対数グラフのガイドを生成します。

stepY = 0.1;
maxY = 8; // 10の8乗までを描く
lenX = 600; // 横のガイドの長さ
baseY = 100; // 1ブロックの縦幅(倍率)
docObj = activeDocument;
for (i=0; i<maxY; i++)
{
for (n=0; n<1; n+=stepY)
{
y = log10(n) * baseY + baseY*i;
pObj = docObj.pathItems.add();
pObj.setEntirePath([[0,baseY+y],[lenX,baseY+y]]);
pObj.guides = true;
}
}
function log10(x) { return Math.LOG10E * Math.log(x); }

グラフの細かさは先頭行の

stepY = 0.1;

の数値で変更できます。0.01など小さい値にすると、より細かいガイドが生成されます。



10のn乗まで描くかは2行目の

maxY = 8; // 10の8乗までを描く

の8の値を変更してください。1ブロックの縦幅は

baseY = 100; // 1ブロックの縦幅(倍率)

の100を変更してください。単位はピクセルになっています。
片対数のガイドではなく両対数のガイドの場合は以下のスクリプトを使ってください。

step = 0.1;
maxX = 6; // 10の6乗までを描く(横)
maxY = 8; // 10の8乗までを描く(縦)
lenX = 600; // 横のガイドの長さ
lenY = 800; // 縦のガイドの長さ
base = 100; // 1ブロックの縦幅(倍率)
docObj = activeDocument;
for (i=0; i<maxY; i++)
{
for (n=0; n<1; n+=step)
{
y = log10(n) * base + base*i;
pObj = docObj.pathItems.add();
pObj.setEntirePath([[0,base+y],[lenX,base+y]]);
pObj.guides = true;
}
}
for (i=0; i<maxX; i++)
{
for (n=0; n<1; n+=step)
{
x = log10(n) * base + base*i;
pObj = docObj.pathItems.add();
pObj.setEntirePath([[base+x,0],[base+x,lenY]]);
pObj.guides = true;
}
}
function log10(x) { return Math.LOG10E * Math.log(x); }

設定変更できる値は最初のスクリプトとほぼ同じです。
ガイドで生成するのではなく、単なる線としたい場合にはパスの線の設定や色指定が必要になるので以下のスクリプトを使用してください。

step = 0.1;
maxX = 6; // 10の6乗までを描く(横)
maxY = 8; // 10の8乗までを描く(縦)
lenX = 600; // 横のガイドの長さ
lenY = 800; // 縦のガイドの長さ
base = 100; // 1ブロックの縦幅(倍率)
docObj = activeDocument;
for (i=0; i<maxY; i++)
{
for (n=0; n<1; n+=step)
{
y = log10(n) * base + base*i;
pObj = docObj.pathItems.add();
pObj.setEntirePath([[0,base+y],[lenX,base+y]]);
pObj.filled = false; // 塗りなし
pObj.stroked = true; // 線あり
pObj.strokeWidth = 0.5; // 線幅0.5ポイント
pObj.fillColor = setColor(0,0,0); // 塗りの色を指定(黒色)
pObj.strokeColor = setColor(0,0,0); // 線の色を指定(黒色)
}
}
for (i=0; i<maxX; i++)
{
for (n=0; n<1; n+=step)
{
x = log10(n) * base + base*i;
pObj = docObj.pathItems.add();
pObj.setEntirePath([[base+x,0],[base+x,lenY]]);
pObj.filled = false; // 塗りなし
pObj.stroked = true; // 線あり
pObj.strokeWidth = 0.5; // 線幅0.5ポイント
pObj.fillColor = setColor(0,0,0); // 塗りの色を指定(黒色)
pObj.strokeColor = setColor(0,0,0); // 線の色を指定(黒色)
}
}
function log10(x) { return Math.LOG10E * Math.log(x); }
function setColor(r,g,b)
{
var tmpColor = new RGBColor();
tmpColor.red = r;
tmpColor.green = g;
tmpColor.blue = b;
return tmpColor;
}


【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/
>

iPadの発売が延期。でも、雑誌の締め切りは延びず......。
皆が期待するような電子書籍のパターンの1つとしては以下のような感じでしょうか。

・不思議の国のアリス for iPad
<
>

ePubフォーマット詳しく見ると、現在のものでは(次も)小説とか単純に文字と挿絵くらいの本が限度。ePub形式で、という条件がつけば皆が期待しているようなレイアウトやデザインにはならない。というか、できない。
どのCSSが使えるかは以下のURLにあるのでチェックしてみるとよいでしょう。

< http://www.idpf.org/2007/ops/OPS_2.0_final_spec.html#Section3.0
>

期待と現実のフォーマットが、これだけ乖離しているのも珍しいかも。皆が期待するような電子書籍は、Flashでやる方が楽。でも、それをやると将来の保証がないので99%か100%駄目。

DTP側からなら、PDFがもっとも確実でもっとも低コストで電子出版できる。今のPDFには映像も入るしJavaScriptも動くので、ある意味皆が予想しているものには近いかとは思います。

勉強がてらePubツールも作ってみました。最後にzip圧縮しないといけませんので、あまり役に立ちませんが。
ShellScript + Apple Script + Adobe系Scriptという三段構えなら一発でできます。

・電子書籍データを作成するスクリプト
< http://www.openspc2.org/eBook/tool/
>
・InDesignで電子書籍データを作成する
< http://www.openspc2.org/eBook/InDesign/
>

また、サイトをあさるとMacOS X/UNIXでShellScriptで連番画像からePubを生成するツールもありました。漫画などのePubを生成したい場合には便利でしょう。

・連番画像ファイルからePubを作成する
< http://naoki.sato.name/lab/archives/142
>

目標の倍以上売れたのですけど(目標少なかったけど)、まだ販売してますf(^^;
・Adobe Illustrator CS3 + JavaScript 自動化サンプル集 発売中
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/
>

毎度おなじみASCII.jpの連載もよろしく。
・HTML5のCanvasで作る、Flash不要のお絵かきツール
< http://ascii.jp/elem/000/000/513/513377/
>