...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

任意の位置関係にある円と長方形が重なる領域の重心を求めよ

というか,実装ですが.

今日はほんとうに大変だった.
何が大変って,プログラムで三角関数を使うときには場合分けがどうしても必要になってしまうのだが,今回はその組み合わせの数が半端じゃなかった.
やりたかったことは,様々な位置関係にある円と四角形(正方形か長方形)が重なった領域の重心座標(あるいは中心座標)を得ること.
厳密にやろうとすると大変なことになりそうだったので,それは諦めた.
それらしい値が取れれば十分だったしね.

数学はともかくプログラミングではあまり好きでない三角関数をなんとか引っ張りまわす.
if-else が大量にできて途中で訳が分からなくなってしまうので,動作確認が取れた段階で,共通にできそうなコードをなんとかまとめて,一つずつちまちまと構造化していく.
その結果,それでもまだすごい数の if-else が連なってはいるがそれなりに動くコードができた.
本当はもっと関数を分割してやればもっと短くなりそうなんだけど,とりあえず細かいことは言っていられないのでこのままにしておくか・・・.
そんなことをすると,きっと,次にここを見たときに号泣してしまうんだろうが(苦笑

ただ,まだ少しバグがあるようなので,取り除かないといけない.
その過程で可能な限り整理してみようかな.

あー,やだやだ.