Sunday, 15 October 2017

円の描画

ちまたで、Illustrator の円はベジェ曲線による近似で誤差があるみたいな話が。

昔、マイコンの自作をやってた時にはグラフィックスは自分で書くわけ。誰も書いてくれないので。それで、マイコン雑誌に載っていたのが、

  DDA Algorithm http://tinyurl.com/qa48sjv

ですね。その当時、東工大では Fortran の演習があって。ちなみにカードだったんですが。それで DDA で円を書くのを提出したことが。「なんで、そんなのやってるの? 他にもアルゴリズムあるけど」みたいなコメントが付いてましたが、だったら、その他のを紹介して欲しかったかな。

で、それで実装した自前のグラフィックで遊んでました。まぁ、ライブラリ書いた時点でかなり満足してしまうものなんだけど。

その後、大学院でレーザプリンタが導入されるわけだけど、こいつにも「円を書く」とかいう機能はなくて。PostScript 以前の時代だから。で、

  LaTeX書いた論文に図を載せる

とかいうと、やっぱり円を自分で書く羽目に。ところが、

  円をアフィン変換する

必要がある。問題なのは楕円の回転ですね。DDAでやればできたんだろうけど、結構、面倒くさい。なので、

  ベジェ曲線で近似する

方が簡単。ベジェ曲線自体の描画はやさしい。

いろんなベクタグラフィックスのフォーマットを相互変換する時にも、楕円の回転問題が出るので、ベジェを使ってました。

今は、主に OmniGraffle を使って SVG で表示してます。

No comments: