Analyzer)は、整数演算のみで図形を描画するアルゴリズムです。ロジックの間違いが有れば指摘してくださると有り難いです。()空白の窓に小さな黒い四角が描かれてるはずです。ターミナルの方に戻ってEnter押せば終了します。Graphicsに豊富に用意された描画関数は置いておいて、このpsetだけを使って線や円や、もっと複雑なものを描いていく、という筋書きです。して、Graphicsライブラリでは左下が原点になります。O'Caml型推論がありますと単に記述量が減るだけでなく、アルゴリズムの本質部分だけがコードに残るため非常にありがたいです。O'Camlのいいところとして、適当に堕落しててその気になれば破壊的代入やforループが使えてしまうところがあります。HaskellやCleanは清廉潔白なので、関数型言語そのものを勉強するにはそっちのほうがいいのですが、他の事をやるときは堕落していてくれた方が有り難く......というわけでここでは、O'Camlを、型推論を行ってくれる手続き型言語として使います。次のように、graphics.cmxa(バイトコード版は.cma)をリンクします。yそれぞれのケースで最後のpsetを取り除けば、WindowsのGDIみたく最後の点は描かない仕様にできます。分数計算を分母倍して行ってるだけなのですが、ここではdひとつで済ませていますが、変数をふたつ使うバリエーションもあるようです。dの初期値を幅の半分にしてる(1/2から始めてる)のは、始点と終点付近でバランスを取るためです。中心から対象に計算して計算量を半分にする方法もありますが、その場合接続点となる真ん中に違和感が生じる場合ありなので、結局この方法が「見慣れた」線が引けるのでは無いでしょうか。()ほら、一応書いときたいじゃないですか、ネ。難しい本はこういうのを飛躍するから難しいという説もあるし。(←ない)円http://fussy.web.fc2.com/algo/algo2-2.htmより。done...略...BASICのCIRCLE文よろしく半径単位でいいならこれでいいんですよ。これですと、直径を1ピクセル単位で指定できないのです。半径を指定する関係上、直径はどうしても2ピクセル単位に......。ベジエ曲線等で円を近似するのは(浮動小数点演算を使うとDDAで無くなるとか野暮なことは置いといて)、オーバースペックな気もしますし、何より僕の手に余ります。......というわけで、セコイ技で。中心から対象に描くから)となってます。直径が偶数の時は、適切にずらしてやればOK......うーむ。()こういうのを力業というのだろうなあ......。