-
-
3点から円の中心と半径を求める
3点を通る円 円は一直線上ではない3点の座標があれば一意に決定します。 下図を参照してください。ここで、3点の座標を、 (x1, y1), (x2, y2), (x3, y3) 求める中心座標を、 (Cx, Cy) 求める半径を、 r とします。 ごく普通に3つの連立方程式を解いていきます …
-
-
画面に描いた円弧をマウスで選択してみよう
円を選択する 円弧の選択を考える前に、円をマウスで選択することを考えます。 ここでいう選択は、円内部点ではなく、円周上をクリックしたとき「選択された」と考えます。 半径 R、中心点(Cx, Cy)の円を考えます。 これは簡単ですね。中心からクリックされた点の距離がRであればよいわけです。 しかしながら、デジタル処理での …
-
-
2点と半径から円の中心座標を求める
ごく普通に解いてみる 2点と半径で円の中心が決まるのはごく簡単です。 こんな感じですね。 さて、当然の事ながら2次方程式の解ですので答えは最大2つ出てきます。 上図が一つの答えですが、この2点を通る中心位置が違う円がもうひとつあるのはすぐわかりますね。 上図のようになります。 プログラム 今回は簡単ですね。すぐプログラ …
-
-
2つの円の接線を求める
2円の接線のパターン 2つの円に引かれる接線を求めてみましょう。 2円の接線が存在する条件としては、 ・片方の円がもう片方の円内部に完全に含まれないこと となります。 上図の場合は接線存在はしません。当然のことながら、 上図のような同心円もそれに含まれます。 では存在するパターンはどのようなものが考えられるでしょうか …
-
-
自分自身を削除するプロセスを作ってみる
起動中の自分自身を削除してアップデートさせる…? Windowsでは、実行中のプログラムやロード中のDLLを削除したり上書きしたりできません。 しかし、自分自身で削除して終了したり、アップデートしたりするにはどうしたらよいでしょうか? MoveFileEx()を使って、次回のリブート時に行うことは可能です。しかしこの方 …
-
-
円弧を描いてみよう
今更、円弧を描く? 今ここには画面に点を打つだけのサービス(API)しか用意されていないグラフィックスライブラリがあると考えてください。 さあ、どうやって円を描く?どうやって円弧を描く? ……もうこんな機会はないかもしれません。 しかしそのおかげでデジタル処理で円弧(円も)を描くしくみに出会うことがなくなっています。こ …
-
-
日の出時間と日没時間の計算方法~プログラム編
日の出、日没、そして南中時刻を具体的に計算してみる 以前に日の出日没時刻計算の概要を示したので、今回は具体的な計算を示してみましょう。 既知なのは、日付と緯度・経度です。これらから日の出・日没・南中の時刻を求めます。 まず、以前の記事では省略してしまった、 Et : 均時差[h] δ : …
-
-
OutputDebugStringで出力したデバッグライトを自前で受け取る
デバッグ情報を自前で受け取りたい WindowsプログラムをCで組む時に使うもので、OutputDebugString()というWin32APiがあるのはご存知だと思います。 VisualStudioなど統合環境で開発しているならば、デバッグ中に出力ウインドウに出力することができます。 フリーウェアでもDbgMOnなど …
-
-
画面に描いた多角形をマウスで選択してみよう
凸型多角形を選択する 三角形、四角形、さらに五角形以上の多角形をマウスで選択することを考えます。 ここでいう選択は、多角形の輪郭線上ではなく多角形の内部をクリックしたときを「選択された」と考えます。 また、このトピックでは凸型の多角形のみを扱います。 上記の様な場合を考えていきます。 外積を使う 2つのベクトルの外積は …
-
-
日の出時間と日没時間の計算方法
日の出時間と日没時間の差って… 釧路と沖縄の日の出時間は夏至で1時間40分、冬至で10分違います。 場所と季節で毎日変わっていくわけです。同一緯度であれば経度方向の距離がそのまま日の出日没時間差、つまり日照時間が同じということです。同一経度であれば緯度方向で日照時間が変化します。 おなじ日本でも釧路と沖縄では全然違うわ …