移植しようとしてプチコンでGCIRCLEしてみると、MSXとは見た目と異なる円ができ、半径=0のときは何も描かれません。
半径0はまあよいとして、見た目が大幅に違うのはいまいち。興味もあり、自前で円を描いてみることにしました。
調べてみると、アルゴリズムが何個も。 今回確認したのは以下:
プチコンで実装してみた図。
- プチコンのGCIRCLE
- 微分/SOFTIST:円、楕円の描画(アルゴリズム) (一番遅い)
- 三角関数(すべての角度について、x=x0+r*cos(a)、y=y0+r*sin(a))三角関数
- ブレゼンハム(Bresenham)の円描画/伝説のお茶の間 No007-09(1) 円の描画(1) MichenerとBresenham
- ミッチェナー(Michener)の円描画/Comparing Circle Drawing Algorithms
- ピタゴラスの定理(x^2+y^2=r^2)/Comparing Circle Drawing Algorithms
- ブレゼンハム 中点分岐を用いた円描画アルゴリズム/伝説のお茶の間 No007-09(1) 円の描画(1) MichenerとBresenham
- ピタゴラスの定理(値のより近いピクセルを選択する方式)/Comparing Circle Drawing Algorithms
- 直径の長さが正しくなる円描画/伝説のお茶の間 No007-10 円描画(2)
横は左から半径0〜9。縦はアルゴリズム |
MSXで円を描いてみる。
MSXのプログラム |
MSXでの実行結果(FS-A1WX) |
これだけやって、MSXとぴったりなのはなし。どうも8.(ビタゴラ2)が近いようなのでこれを採用。半径0は補正すればそっくりになるかも?
(プチコンのGCIRCLEとおなじものもなし。。3.(SIN/COS)の四捨五入版が近いかも)
どうしても自前で円を描画したい、という人はそういないとおもいますが、記録のためQRコード。
No comments:
Post a Comment