C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

2D的な最小境界ボックスを探す1

少し前から、こちらに取り組んでおります。
Solved: Draw OrientedBoundingBox in 2D Sketch - Autodesk Community
ちょっと答えてしまった手前、引かないのも本音です。

こちらを解決する手段として、慣性モーメントの主軸を利用しようと
思い、こちらを作りました。
解決済み: 最小の境界ボックスを得る方法 - Autodesk Community
結果的に慣性モーメントの主軸では最小境界ボックスを作る為の
方向は得られないと判断しました。
(ベターな解は得られますが、ベストな解は得られない)

あぁその際、気が付いたバグがこちらです。
ボディの不透明度が維持されない - Autodesk Community



結局欲しいのは3Dの最小境界ボックスでは無く、2Dの
最小境界ボックスなんです。

f:id:kandennti:20220307185620p:plain
こんな穴に対しての最小境界ボックスを得るための
アルゴリズムがちょっと分かりませんでした。

その為、1°毎に回転しながら0~90°の境界ボックスを
取得し、最小のものにしたのですが、精度がイマイチです。
(恐らく0~180°調べなくても良いですよね?)

もっと細かい角度で行えば良い結果が得られるのは
間違いないのですが処理時間がかかりすぎる為、
面白くないのでもっと効率良く探し出したいです。

f:id:kandennti:20220307190045p:plain

謎過ぎる絵ですが、僕の頭の中身で表現しています・・・。
荒っぽい角度で一度最小境界ボックスを探し出します。
当然ながら精度がイマイチです。

推測ですが、精度の良い最小境界ボックスは、恐らく
最小境界ボックスを見つけた前後の範囲内の角度に
存在している事が予想されます。

f:id:kandennti:20220307190533p:plain

その為、緑の角度の範囲内を再度分割して、
最小境界ボックスを探し出します。
もちろん、ここでも精度の良い最小境界ボックスでは
ない可能性があります。

その為、再度前後の角度から・・・を繰り返し、
分割する角度が十分な程(0.01°とか)小さくなれば
良いのでは? と妄想中です。 再帰はしたくない。