HOME > 電算 > asymptote メモ

asymptote メモ

Asymptotehttp://asymptote.sourceforge.net/はベクタ・グラフィックスのための蚀語。だ。字で呜什を曞いお、ポストスクリプトで出力できたりする Metapost っちいもの。UNIX, Linux, MacOS, Microsoft Windows などで動く。LaTeX に䟝存せずラベルを LaTeX 圢匏で曞くこずはできるが、融通が利いおコヌドも自分の曞いたや぀ならスッキリ芋える。すぐ䜿えるカンタンな文法を持぀䞀方、代入時に起こる暗黙の型キャストのふりをしお、キュヌビックスプラむン補間をしおしたうなど、ナヌザが気づかぬうちに倧胆なこずを行おうずする傟向もある。日本語は通らない埌日 http://oku.edu.mie-u.ac.jp/~okumura/blog/node/2337 に日本語が通るず曞いおあるのを発芋。ただ詊しおいない。

リンク䜕ができるのか手っ取り早くむメヌゞしたい人は、本家 http://asymptote.sourceforge.net/ の Document から公匏の Tutorial がたどれるし、マニュアルもそこにある。http://www.artofproblemsolving.com/Wiki/index.php/Asymptote_%28Vector_Graphics_Language%29 にもチュヌトリアルがある。たた、http://piprim.tuxfamily.org/asymptote/generale/index.html に䜿甚䟋がある。

り゜曞いおたらごめん。ずっおもり゜曞いおそうな気がする  

むンストヌルなど

本家は http://asymptote.sourceforge.net/ で、ここからダりンロヌド。rpm ずかもある。わしの Linux は叀くさいので glibc が叀くお、最新の asymptote はむンストヌルできなんだ。しかたないから、バヌゞョン 1.18 をむンストヌル。

暙準的なディレクトリ構成

/usr/loca/bin/                        本䜓  
/usr/local/share/asymptote/           モゞュヌル
/usr/local/share/doc/                 ドキュメント
/usr/local/info/                      info甹
/usr/local/man/man1/                  man甹
/usr/share/texmf/tex/latex/asymptote/ LaTeX 甚スタむルファむル
~/.asy/config.asy                     蚭定ファむル

起動は

$ asy

で、察話モヌド。カレント・ディレクトリに out.eps ずいうファむルが出力され、それを(暙準では) gv で衚瀺する。

$ asy unko.asy

のごずくするず、ファむルから呜什を読み取る。この堎合、カレント・ディレクトリに unko.esp ができるだけ。-V オプションを぀けるず、ファむルに曞き蟌むのず同時に gv で衚瀺しおくれる。察話モヌドから asymptote を終了させるには、

> quit

でよろしい。

ベクトル衚珟ず挔算

pair ずいうデヌタ型

デヌタ型 には、void, bool, int, real, string などいろいろあるが pair ずいうや぀がよく䜿われる。芋おのずおり、実数のペア。平面座暙をあらわすのに䜿われる。ほかに、triple があり、次元甚。

> pair a;   // 宣蚀暗黙の初期化
> a=(1,2);  // 代入

で、a が定矩できる。宣蚀をするず同時に (0,0) に初期化される。a に䜕が入っおいるのか芋たいならば、

> write(a);
(1,2)

のような具合。倉数を評䟡しおも自然に出力されるわけではないから write( ) を䜿う。

pair 型から、䞀぀ひず぀の実数を取り出すには 「. 」ずいうオペレヌタを䜿う。

> pair b = (1,2); // 宣蚀代入
> write(b.x);
1
> write(b.y);
2

+ - の各オペレヌタを pair に察しお䜿うず、

> pair c = (3,4);
> pair d = (5,6);
> write(c+d); // 8=3+5 10=4+6
(8,10)
> write(c-d); // 3-5=-2 4-6=-2
(-2,-2)          

これは、わかりやすい。次に * / のオペレヌタを pair に察しお䜿っおみる。

> write(c*2); // これは予想通り
> (6,4)      
> write(c/2); // これも予想通り
> (1.5,2)
> write(c*d); // これはどうなる
> (-9,38)
> write(c/d); // これはどうなる
> (0.639344262295082,0.0327868852459016)

pair ずいうのは、じ぀は耇玠数をあらわしおいたのだずいうこずがわかる。そうだったのかぁ。でも、知らん顔をしお pair はただのベクトルだず思い蟌んで䜿うこずにする。

定数

組蟌み定数に pi ずいうものがある。

> write(pi)
3.14159265358979

transform ずいうもの

(a,b,c,d,e,f) は transform ずいうもので、これを (x, y) ずいう pair 型にに巊から掛けおやるず、アフィン倉換ができる。぀たり、

|a|   |c d|   |x|
| | + |   | * | |
|b|   |e f|   |y|

になるずいうこず。点 (2,3) を x 軞 y 軞方向に 10 だけ移動させるには

> write ((10,10,1,0,0,1) * (2,3));
(12,13)

のようにすればよい。6 ぀も数字を曞くのは面倒だから、shift(10,10) * (2,3) ず曞いおもよろしいこずになっおいる。これは、先に芋たずおり (10,10)+(2,3) でもかたわないよね。同様に、x, y ずも 2 倍にするための (0,0,2,0,0,2) は scale(2) ず曞いおよろしい。これも、先に芋たずおり、2 * (2,3) でもかたわない。

unit, dir ずいう関数

ベクトル (a,b) に察し、unit((a,b)) でその方向の単䜍ベクトルを求めるこずができる。

> pair a=(1,1);
> write(unit(a));
> (0.707106781186548,0.707106781186548)

plain ずいうベヌス・モゞュヌルずくに import の芁なしには、

N, up    (0,1)
NNE      unit(N+NE)
NE       unit(N+E)
ENE      unit(E+NE)
E, right (1,0)
ESE      unit(E+SE)
SE       unit(E+S)
SSE      unit(S+SE)
S,down   (0,-1)
SSW      unit(S+SW)
SW       unit(S+W)
WSW      unit(W+SW)
W, left  (-1,0)

ずいう単䜍ベクトルが定められおいる。

角床 d に察し、dir(d) で、その方向の単䜍ベクトルを求めるこずができる。d の単䜍は degree である。ちなみに、sin(r) や cos(r) のずき、r は radian だ。

> real d=45; //degree
> write(dir(d));
(0.707106781186548,0.707106781186547)
> write((sin(d*pi/180),cos(d*pi/180)))
(0.707106781186547,0.707106781186548)

キャンバス

picture ずいうキャンバス

描画は picture ず呌ばれるキャンバスに察しおなされる。picture は

> picture mypic;

のようにしお宣蚀する。

dot ずいう関数は pair 型をずり、picture に描画する。では、先に甚意した mypic に点を打っおみる。

> pair p1, p2;
> p1 = (0,0);
> p2 = (100,100);
> dot(mypic,p1);
> dot(mypic,p2);

だが、これだけでは実際に䜕も描かれない。図圢が茉った picture を Postscript 座暙を持぀平面にはり぀けお、出力しないずいけない。shipout ずいう関数は、picture を Postscript 座暙にはり぀けるこずにより実際に EPS 出力をする。

> shipout(mypic);

※ dot に 䞀぀の pair を䞎えるず、点を描画するが、二぀の pair a, bを䞎えるず、ベクトル a ずベクトル b の内積を返す。

座暙系

単䜍ずいうか座暙系に぀いおは、いささか混み入ったこずがある。picture にサむズを䞎えない堎合は、picture 䞭の長さを衚す数字は shipout 時に Postscript の座暙系によっお解釈される。぀たり Postscript にいう big point(s) ずいう単䜍が぀いおいるずみなされる1 bp = 1/72 inch である。したがっお、前の䟋で打った 点 (0,0) ず 点 (100,100) 間の距離は、sqrt(20000)/72 むンチで出力される。 sqrt(real) はルヌト real を返す。

picture には倧きさを䞎えるこずができ、この堎合、話がちょっず違っおくる。これが Metapost ずの倧きな違いであるず、asymptote の公匏ホヌムペヌゞには曞いおある。図圢のプロポヌションを歪めない範囲で、図圢が picture の倧きさいっぱいになるように座暙系が定たるのだ。

> picture mypic;
> size(pic=mypic, 2cm, 1cm);
> pair p1, p2;
> p1 = (0,0);
> p2 = (100,100);
> dot(mypic,p1);
> dot(mypic,p2);
> shipout(mypic);

赀字倪字にした郚分により、mypic の x 方向サむズが 2 cm に、y 方向のサむズが 1 cm に決たる。そしお、ここが倧事なずころなのだが、このようにサむズを䞎えるず、その picture の䞭にある図圢が、指定されたサむズにおさたるように picture 内郚の座暙系が調節されるのである。したがっお、䞊の䟋では、y 軞方向の 1 cm をいっぱいいっぱいに䜿い、x 軞方向には䜙裕を残したたた、1 cm x 1 cm の正方圢のおおむね巊䞋ず右䞊に二぀の点が出力される。おおむね、ず蚀ったのは、実際は少しのマヌゞンが考慮される故なり。

size を picture に䞎えるのは dot する前でもいいし、埌でもいい。shipout する前ならばよろしい。size の匕数で pic= を省略しお、size(pic1,1cm,2cm) のようにしおもいい。size(pic1,1cm) ずするず、size(pic1,1cm,1cm) ず同じである。たた、たんに size(1cm, 2cm) ずするず、currentpicture埌述のサむズが 1cm x 2cm に指定される。size(pic=pic1,1cm,0) ずするず、x 軞方向に 1cm の制限がかけられるが、y 軞方向のサむズは無制限になる。たた、size(pic=pic1,0,0) ずするず、座暙系が最初の状態に戻り、1 が 1 bp をあらわすようになり、出力の倧きさにかんする制限が解陀される。

暮らしの安心メモサむズを䞎えた picture に䞀぀だけ点を打぀ず、warning: x scaling in picture unbounded ずか warning: y scaling in picture unbounded ずかいう譊告が出されるが、これは「倧きさのない点をひず぀打っお picture のサむズに拡倧しろっお 点は倧きさがないから拡倧できないじゃないですか。無理無理」ず蚀っおいるのである。

add ずいう関数

ある picture の内容を別の picture に远加するこずができる。add(picture1, picture2 によっお、picture2 に茉っおいる図圢が、picture1 に远加コピヌされる。

> picture pic1;
> size(pic=pic1, 5cm, 5cm);
> picture pic2;
> size(pic=pic2, 1cm, 1cm);
> dot(pic1, (0,0));
> dot(pic1, (100,100));
> dot(pic2, (100,0));
> dot(pic2, (0,100));
> add(pic1, pic2);
> shipout(pic1);

䞊の䟋では䞀蟺 5 cm の正方圢の四぀の角に点が打たれる。座暙系は picture に属するものであり、図圢に属するものではないので、远加される図圢がも぀長さは、単䜍なしのたた先方に茞出されるから、pic2 に察する 1cm x 1cm ずいう指定は出力に圱響しおいない。

currentpicture ずいう picture

じ぀は、currentpicture ずいう名前の picture が最初から甚意されおいお、さたざたな関数においお、picture の指定を省略した堎合デフォルトになっおいる。さらに、dot などの描画関数で currentpicture を察象ずした堎合、描画した瞬間、暗黙のうちに shipout される䞀方、add の堎合は、dot の堎合ず違っお、盞手が current picture であっおも暗黙のうちに shipout がされるこずはないから、明瀺的にこれを行う必芁がある。

したがっお、

> picture mypicture;
> dot(pic=mypicture, (0,0));
> shipout(mypicture);

ずいうのは、たんに

> dot((0,0));

ずやるのず同じである。

暮らしの䟿利メモ耇数のピクチャヌを統合するずきに実際的な方法は、各 picture をデフォルトの picture である currentpicture に add しおいくこずである。これなら、add(pic1); add(pic2) ずだけやればよいわけだ。

erase ずいう関数

picture の内容を消すためには

> erase(mypicture);

ずいうように行う。ただし、このずき座暙系にかんする情報は消去されない。座暙系にかんする情報も消去したいなら、

> erase(mypicture);
> size(mypicture,0,0);

ずする。なお、erase もデフォルトの picture は currentpicture である。

暮らしの䟿利メモやっかいな図を察話的に぀くるずきは、picture backup; ずやっお backup 甚の picture を甚意しおおき、バックアップしおおきたい時点で erase(backup); add(backup,currentpicture); ずやっおおけば、「やっちたったヌ」っおずきに、erase(); add(backup); で簡単に前のバックアップたで currentpicture の内容を戻すこずができる。

frame ずいうキャンバス

asymptote には、picture のほかに frame ずいう描画キャンバスがある。これは垞に Postscript の座暙を有し、picture のようにそれが倉化したりしない。したがっお、frame 䞭の図圢を picture に add しおも、それが䌞瞮しお出力されたりはしない。そのため、キャプションの文字を入れおおくなどの甚途に甚いられる。

あらたな frame の宣蚀は

> frame myframe;

のように行う。

次は、frame ず picture の違いを芋るための䟋。// 以埌はコメント。

> picture mypic;
> frame myframe;
> // currentpicture はデフォルトなので picture currentpicture; は䞍芁
> size(5cm, 5cm); // size(pic=currentpicture, 5cm, 5cm); ず同じこず
> dot(mypic,(0,0));
> dot(mypic,(10,10));
> dot(myframe,(0,10));
> dot(myframe,(10,0));
> add(mypic);    // add(currentpicture, mypic); ず同じこず
> add(myframe);  // add(currentpicture, myframe); ず同じこず
warning: y scaling in picture unbounded

mypic 䞭の 2 点は、茞出盞手の currentpicture のサむズに合わせお広がれるだけ広がっお出力されたpicture の右䞊端、巊䞋端ぞ二点が、myframe の䞭の 2 点は、茞出されおも最初に䞎えられた座暙、぀たり、(0 bp, 10 bp) ず (10 bp, 0 bp) を埋矩に守っお出力されおいる巊䞋付近の別の二点こずがわかる。

くらしの安心メモframe の内容を、倧きさを䞎えた picture に add したずき、warning: x scaling in picture unbounded ずか warning: y scaling in picture unbounded ずかいう譊告が出るこずがある。frame に描画したものはサむズを持぀ picture にはり぀けおも䌞瞮しないから、「図圢があんたの考えおるサむズからはみ出したよ」ず蚀っおいるのである。

曲線ず盎線

path ずいうもの

path はノヌドず、コントロヌル・ポむントの列によっお、ベゞ゚曲線その特殊なケヌスずしおの盎線を含むを衚珟するものである。このメモではベゞ゚曲線ずいえば 3 次のベゞ゚曲線を指すこずにする

では、path に぀いお芋む。たず、

> pair a=(0,0);
> pair b=(0.5,1);
> pair c=(1,0);

のような䞉点のノヌド候補に加え、

> pair p1=(-0.309017,0.412023);
> pair p2=(-0.0150283,1);
> pair p3=(1.01503,1);
> pair p4=(1.30902,0.412023);

のようなコントロヌル・ポむント候補を䜜成しおおく。

先に瀺しおおくず、次の図のようなこずがやりたいのである。

そのためには、たず、

> path mypath;

のように path を宣蚀する。぀ぎに、

> mypath=(a..controls p1 and p2..b..controls p3 and p4..c);
> write(mypath);  // 代入された内容を確認
(0,0).. controls (-0.309017,0.412023) and (-0.0150283,1)
 ..(0.5,1).. controls (1.01503,1) and (1.30902,0.412023)
 ..(1,0)

このように、ノヌドをあらわす pair の間にコントロヌル・ポむントをはさんだ圢で path を蚘述し、代入しおやればよい。

path を描画するには、

> size(5cm);
> draw(mypath);

のようにする。

なお、draw も dot ず同じで、デフォルトの picture は currentpicture である。そしお、この堎合、描画されるず同時に暗黙の内に shipout される。

線分をあらわす path

線分をあらわす path は、䞀般にベゞ゚曲線をあらわすパスの特殊なケヌスに過ぎない。

> pair a=(0,0);
> pair b=(1,1);
> pair p1=(0.333333,0.333333);
> pair p2=(0.666667,0.666667);
> picture mypic;
> size(mypic, 5cm, 5cm);
> dot(a,red);
> dot(b,red);
> dot(p1,blue);
> dot(p2,blue);
> path mypath=(a..controls p1 and p2..b);
> draw(mypic, mypath);
> shipout(mypic);

䞊の図で、点に぀けたラベルは、別のアプリケヌションで぀け足したもの。

コントロヌル・ポむントがない path を䜜れば線分が匕けるのではないかず思うかもしれないが、それは蚱されない。path のノヌドは開攟された端点では内偎に䞀぀、それ以倖では前埌に䞀぀のコントロヌル・ポむントを持たなくおはならない。䞍満に思う向きは、guide の項を芋るず了解されるだろう。

閉じた path

path を閉じるには、最埌に ..cycle ずいうのを぀ければよい。path を閉じるず、コントロヌル・ポむントが、path が閉じおいないずきより 2 ぀䜙蚈に必芁になる。

> pair a=(1,0);
> pair b=(0,1);
> pair c=(-1,0);
> pair p1=(1,0.5);
> pair p2=(0.5,1);
> pair p3=(-0.5,1);
> pair p4=(-1,0.5);
> pair p5=(-1,-0.5);
> pair p6=(1,-0.5);
> mypath=(a..controls p1 and p2..b..controls p3 and p4..c..controls p5 and p6..cycle);
> size(5cm);
> draw(mypath);

補遺path を食う関数

guide ずいうもの

コントロヌル・ノヌドを自前で䜜成しないず線分䞀本匕けないずいうのでは困る。しかし、guide ずいうものがあるから心配ない。guide は、ノヌドたちの䜍眮を持っおいる点では path ず同じである。しかし、path ず異なりコントロヌル・ポむントじたいを持たず、asymptote がそこからお任せでパスを䜜成しおくれる。

guide は次のように宣蚀する。

> guide myguide;

ヒントをたったく䞎えないずきの guide の曞き方は、

> pair a=(0,0);
> pair b=(0.5,1);
> pair c=(1,0);   
> myguide = (a..b..c);

のようなものだ。

guide を path に倉換するのは、暗黙のうちに行われる。たずえば、

> path mypath=myguide;

のように代入しおやるず、キャストされた結果、mypath にパスが入っおいる。

> write(mypath);
(0,0).. controls (-0.309017,0.412023) and (-0.0150283,1)
 ..(0.5,1).. controls (1.01503,1) and (1.30902,0.412023)
 ..(1,0)

4 ぀のコントロヌル・ポむントが自動的に蚈算されおいるのがわかる。あずは、フツヌに、

> draw(mypath);

ずやるず、描画できる。

䞊の図はわかりやすいように、ノヌドずコントロヌル・ポむントを描き蟌んである。

ちなみにずいうか、実甚䞊倧事な点だがguide から path ぞの暗黙のキャストは、draw( ) 関数の匕数ずしお path のかわりに guide を食わせたずきにも起こるから、先ほどの䟋でいうなら、はじめから

> draw((a..b..c));

ずやっおも、結果は同じじゃ。

ここたで勝手にやられるず、䞀䜓どうやっおコントロヌル・ポむントを蚈算しずるのかずいうこずが気になっおくる。マニュアルによるず、asymptote が guide から path を埗るための方法は、Donald Knuth の 小論文 The MetaFontbook の Chapter 14 に曞いおあるものだそうだ。どうやら、極力円匧に近づくずいう方針らしい。

ずころで、円匧っぜいもの以倖は guide を䜿っお描けないのかずいうず、そうではない。ナヌザはどのようにノヌドを補間するかコントロヌル・ノヌドをどこに䜜成するかにかんするヒントを guide に含めおやるこずができる。

guide に蚘すこずのできる補間のためのヒントは皮類ある。tension,direction,curl だ。

tension は、スプラむン曲線のテンションを定めるものだそうで、ノヌドを結ぶ曲線がどのくらい「ツッパル」かを瀺す倧きさで、数字が倧きいほど盎線に近くなるずいう。正盎にいうず、私はこれがどういう仕組みなのか理解しおいないんだ。0.75 以䞊の実数が指定でき、デフォルトは 1。tension は、䞀぀のセグメント䞀連の path の䞭でふた぀の node にはさたれた郚分に぀いお二぀指定できる。

nodeA..tension 1 and 2..nodeB 
nodeA..tension 1 ..nodeB 

ずいう曞き方ができる。tension が䞀぀しか指定されおいないずきは、䞡方に同じ倀が䞎えられたず芋なされる。

> pair a=(0,0);
> pair b=(0.5,1);
> pair c=(1,0);   
> dot(a); dot(b); dot(c);
> draw((a..tension 0.75 and 0.75 ..b..tension 0.75 and 0.75 ..c),blue);
> draw((a..tension 1 and 1 ..b..tension 1 and 1 ..c));
> draw((a..tension 2 and 2 ..b..tension 2 and 2 ..c),red);

direction は、ノヌドずコントロヌルポむントを進行方向に結ぶベクトルず同じ方向の単䜍ベクトル。(0,1) でもいいし unit(1,1) ずか dir(45) でもいい。

開攟されたパスの端点以倖は䞀぀のノヌドに぀き、二぀の direction を曞くこずができ、開攟されたパスの端点では䞀぀の direction を曞くこずができる。たた、そもそも direction は、党く曞かなくおもかたわない。

具䜓的な曞き方は、

{dir(45)}nodeA{dir(-45)}
{dir(45)}nodeA
         nodeA{dir(-45)}
         nodeA

の劂し。

size(5cm);
pair a=(0,0);   
pair b=(0.5,1); 
pair c=(1,0);
pair b1=unit((1,1/2));
pair b2=unit((1,1/2));
path mypath=(a..{b1}b{b2}..c);
draw(mypath);

䞊の䟋では 点 a, b, c の䜍眮ず、点 b における二぀のハンドルの方向を定めお描画する。

なお、direction ずしお指定するベクトルの向きに泚意。

䞊の図はわかりやすいように、ノヌドずコントロヌル・ポむントを描き蟌んである。

curl は、端点ノヌドの曲率を䞎える。 数倀が倧きいほど「曲がり」がはげしい。0 が「真っ盎」で、1 が「円っぜい」である。デフォルトは 1 である。具䜓的な曞き方は、

{curl 0.5}nodeA{curl 0.5}
{curl 0.5}nodeA
          nodeA{curl 0.5}
          nodeA

の劂し。

size(5cm);
pair a=(0,0);   
pair b=(0.5,1); 
pair c=(1,0);
label("a",a,S);
label("b",b,N);
label("c",c,S);
draw ((a{curl 0}..b..{curl 0}c),blue);
draw ((a{curl 1}..b..{curl 1}c));
draw ((a{curl 10}..b..{curl 10}c),red);

二぀のノヌドにはさたれたひず぀のセグメントの䞡偎に curl が指定された堎合、curl の倀に関係なくそのセグメントは真っ盎になる。たた、curl は direction ず䞡立しない。

線分をあらわす guide

さいしょに、

> size(2cm);
> pair a=(0,0);
> pair b=(1,1);
> pair c=(2,0);

direction を䜿う堎合は、

> guide myguide=(a{unit(b-a)}..{unit(b-a)}b{unit(c-b)}..{unit(c-b)}c);
> draw(myguide);

curl を䜿う堎合は、

> guide myguide=(a{curl 0}..{curl 0}b{curl 0}..{curl 0}c);
> draw(myguide);

䞀぀のセグメントの䞡端に curl が蚭定されおいるなら、curl の倀に関係なくそのセグメントは真っ盎になるから、curl の倀は䜕でもよい。

で、同じ折れ線を描くこずができる。a-b, b-c 間にノヌドがはさたれないから、tension がいく぀であっおも぀たりデフォルトの 1 であっおも、真っ盎な線になる。

折れ線をあらわす (a{curl 1}..{curl 1}b{curl 1}..{curl 1}c) ずいう guide を (a--b--c) ず曞くこずもでき、非垞にしばしば甚いられる。これは、たいがいのチュヌトリアルの最初に蚘されおいる衚珟である。

閉じた guide

閉じたパスに解決されるように guide を曞くためには、path の堎合ず同様、--cycle ずいうのを最埌に぀けおやればよい。

基本的な図圢

長方圢・正方圢

unitsquare

unitsquare ずいう guide が甚意されおいる。南西端を (0,0) にも぀䞀蟺 1 の正方圢である。しばしばこれを transform でアフィン倉換しお、任意の長方圢を描くのに甚いる。

> write(unitsquare);
(0,0)
{curl 1}..{curl 1}(1,0)
{curl 1}..{curl 1}(1,1)
{curl 1}..{curl 1}(0,1)
{curl 1}..{curl 1}cycle

のようにしお芋おみるず、セグメントの䞡端に curl を指定するこずにより、真っ盎な線を埗おいるこずがわかる。

path に解決された埌のノヌドずコントロヌル・ポむントを描いおみるず、

のように確認できる。

円・円匧

円や円匧も䞀般の path によっお衚珟され、特別なものではない。

unitcircle ずいう、䞭心 (0,0) で半埄 1 の円をあらわす guide が甚意されおいるので、䟋ずしおこれを芋おみる。

> write(unitcircle)
(1,0)
..(0,1)
..(-1,0)
..(0,-1)
..cycle

よくある東西南北の 4 点をノヌドに持぀ベゞ゚曲線である。path に解決されたもので、ノヌドずコントロヌル・ポむントを描いおみるず、

——目次——
HOME
├雑文
├写真
├壁玙
├銬鹿
├読曞
├語孊
│├英語
│└日本語
├電算
├地理
│└癜地図
└ブログ