お世話になります。
pythonで、PDFの処理をしています。
座標軸が取得できている2つのオブジェクトがあり、
片方の図表が、もう片方の図表の 内側に収まっているかどうか を調べていますが
コードの書き方が分かりません。
左下を起点(0,0)として、例えば、リストで下記のような
outer_boxとinner_boxの変数を持った場合、
inner_boxが、outer_boxの内側に完全に収まっているかどうかを調べるためには、
どのようにすれば良いでしょうか?
outer_box=[(2,2),(2,8),(8,2),(8,8)]
inner_box =[(4,4),(4,6),(6,4),(6,6)]
実際には、inner_boxがたくさんあり、
1つずつ、ループで調べる手順です。
もし、numpyなどをimportして便利であれば、その方法でご教授いただけると幸いです
お手数をお掛けしますが、よろしくお願いします
オブジェクトがN個あるのであれば、その組み合わせは、N!/2あります。
仮にそれをi番目のオブジェクトがj番目のオブジェクトと比較した結果、内包関係にあるかどうかをcomp[i][j](ただしi>j)で定義し(i<=jの部分は全てFalseとします)、各オブジェクトの左上、座標をpos[k]=[topleft,topright,bottomleft,bottomright]と定義するなら(各座標はx,y要素を持ちます)。
comp[i][j]=(pos[i].topleft.x<pos[j].topleft.x) and (pos[j].topright.x<pos[i].topright.x)
and (pos[i].topleft.y<pos[j].topleft.y) and (pos[j].bottomleft.y<pos[i].bottomleft.y)
and (pos[i].bottomleft.x<pos[j].bottomleft.x) and (pos[j].bottomright.x<pos[i].bottomright.x)
and (pos[i].topright.y<pos[j].topright.y) and (pos[j].bottomright.y<pos[i].bottomright.y)
(座標が一致しているときは内包にしていません。自分で書き換えてください。)
となると思うので、ループすれば何となく出てくるのではないかと。。。
階層にもならないし、一致座標をTrue判定にしていないので、目的のものになるかは知りませんが、大雑把な考え方だけ知りたいのであれば、この説明で十分かと思います。速い方法や洗練された方法を知りたいのであればご自分でご検討ください。
早速にアドバイスいただきありがとうございました。
wwbQzhMkhhgEmhUさんとiredflyさんのアドバイスを元に
回答に辿りつかせていただきました。
今後ともよろしくお願いしますm(_ _)m

回答2件
あなたの回答
tips
プレビュー