Asymptoteの練習 No.0004 正17角形を描く

正17角形

Asymptoteで繰り返し処理をしてみる。for 文の構文はC言語とほぼ同じ。繰り返しの変数は,その場で定義すればよい。ローカル変数ということなのだろう。簡単なところで正多角形を描いてみる。

/*
  Asymptoteの練習 No.0004
  繰り返し処理
  t0004.asy
*/

size(6cm,0); // 出来上がりの図版のサイズを幅6センチに設定

int N=17;
pair pO=(0,0);
pair[] pA;

for (int i=0; i<=N; i+=1)
  {
    pA[i]=(cos(2*i*pi/N),sin(2*i*pi/N));
  }

for (int i=0; i<=N-1; i+=1)
  {
    draw(pA[i]--pA[i+1]);
    draw(pO--pA[i]);
    dot(format("$\mathrm{P}_{%i}$",i), pA[i],dir(pO--pA[i]));
  }

以前 Metapost で同じようなことをしたことがあるが,頂点のラベル付けで添え字を自動で書き込むことが出来なかった。Asymptoteでは format 文が用意されているので,繰り返し処理の中で,変数 i を文字(数字)に書き下してからTeX側に送ることが簡単に出来るようだ。これは便利だ。

コメントを残す

メールアドレスが公開されることはありません。