Bezier曲線

Active Xが動作してません。
使用方法

「編集」では、既に引かれたベジェ曲線の個々の制御点を、移動させることができる。

制御点の移動は、ただ自分の意図どおりにドラッグさせるだけであり、編集したい曲線を変えるには、スクロールバーを上下に動かせばよい。尚、この時、制御点を追加することはできない。

「移動」では、既に引かれたベジェ曲線を移動させる事ができる。

これも曲線の移動は、ただ定点をドラッグさせるだけであり、移動させたい曲線を変えるには、スクロールバーを上下に動かせばよい。

「Bz曲線」では、新たにベジェ曲線を作成することができる。

ベジェ曲線を作るには、マウスで制御点を配置していき、配置し終わったならば、Enterで確定することができる。BackSpaceを押せば、途中でキャンセルできる。

閉曲線──始点と終点を合わせただけの実装──は、ただ単にチェックボックスをONにすればよい。

なお、描画可能なベジェ曲線の最大次元は、170である。それ以上だと、バーンスタイン関数演算の過程でオーバーフローを起こしてしまう。

「描画」では、キャンバスに色を塗る事ができる。4本の縦スクロールバーは、左から順に赤、緑、青で、一番右が、塗る範囲円の半径を制御している。

「消去」は、最近の曲線を削除する。ただし任意の曲線は削除することはできない。

「全消去」は、描画されている全ての曲線を削除する。

曲線の最大数は、1024本である。それ以上の本数を作ると、恐らく例外が発生する。

プログラムリストと解説

出力部に3、4層に及ぶ仮想スクリーンを用いる事により、逐次曲線が描画し直されないようにしている。そのため、曲線の絶対量が多くなっても、動作が重くなったり、画面がちらついたりすることはない。どんな本数でも体感的に、ほぼ一定の計算量である。

曲線の支配は、制御点の座標、即ち複数の数値によって成されている。つまりアプレットの曲線はベクトル画像(vector graphics)である。

色塗りは、グラフィックコンテキストにグラフィックスクラスのメソッドを用いて、描画しているのでベクトル画像ではない。

つまり、曲線と色の情報の格納場所、方法は全く、別別であり、各々に仮想スクリーンの階層の差を利用して、独立した両者を掛け合わせている。