書いてみたりしているところ。空き領域を管理しながら詰める方法を眺めていて、なんだか断片化してるソレみたいだなと。薄いピンクの色が、空き領域として管理されている領域を示しているのだけど。領域がバラバラになっているから、そこに入れられると判断できない状態になっていて。これってどうにかならんものか...。1次元の空き領域なら、単純にくっつけてしまう・結合してしまえばいいけれど。2次元の空き領域って、結合しようにも...。話、以下のような空き領域があったとしても。何通りかの矩形領域になってしまう。矩形じゃなくて、多角形にして管理できないかしら。多角形の中に矩形が入るのかを、どうやって判定すればいいのやら。仮に判定できたとしても、その矩形を収めた後の空き領域をどうやって作ればいいのやら。そのへん考えていくと、ドローツールの類はどうやって処理をしているんだろうと。長方形の詰め込み問題についてまだまだ実験中とりあえず、BLF法(Bottom-Left-Fill)については動いた。サンプルプログラムを、意味も分からず書き写したのだけど。説明用pdfを、自分が分かるように写経(?)したら、何をやってるか理解できた。写経したpdfは以下。_BL安定点候補についての説明pdf_BL法チェックについての説明pdfただ、問題があることも分かったわけで。以下が結果画像だけど。赤い点が、BL安定点候補の座標。́・ω・`)」という場所に、BL安定点候補が作られてる。この全ての候補群に対し、矩形が置けるか、置いたとして他の矩形と重なってないか、てなことを判断していくわけだから...。矩形の数が少ない場合は、他の方法と比べてそんなに処理時間は違わないのだけど。配置済みの矩形が増えるにつれて、どう見てもモリモリと遅くなっていくはずで。扱う矩形数は少ないのだからこれでいいじゃん、という気もするのだけど。BL安定点候補を減らせないか、という気もしてきたり。すればいいんだろう?ちょっと思いつくのは...。メモリが贅沢な環境なら、配置先と同じ大きさの、「矩形が既に描かれてるか否か」だけを判定する画像領域を作って、そこにも矩形を書き込んでいく。BL安定点候補が見つかった際に、その座標には既に矩形が描かれてるなら、BL安定点候補から外す。新しく置いた矩形から線分を伸ばして、配置済み矩形の線分、もしくは配置済み矩形から伸びた仮想の線分との交差座標を記録。新しく置いた矩形から近い順に交差座標を見ていって、仮想線分との交差座標はそのままにして、実際の線分と交差したらそれ以後のBL安定点候補は、候補から外す。前者はともかく、後者はかえって遅くなるんじゃないのかという気も。新しく置いた矩形の上下左右に4回その処理を行うから、4回ソートすることになるだろうし。