[Utils] 求一个任意角度的矩形是否能够容纳另一个任意角度的矩形

不不不,这算法太麻烦了,过两天我忙完了,换一个新算法~= ̄ω ̄=

[Utils] 求一个任意角度的矩形是否能够容纳另一个任意角度的矩形_第1张图片
可能的布局情况

提设

  1. 外部矩形记作OutBound
  2. 内部矩形记住ClipRect
  3. 求ClipRect是否已经被OutBound完全包含,如果没有包含,需要把OutBound平移多少才能包含ClipRect?如果平移不能达成包含的目的,需要把OutBound放大并平移多少才能包含ClipRect?

思路

  1. 求出ClipRect的对角线长度,记作clipRectDiagonalLength
  2. 求出ClipRect两条对角线的斜率,记作k1k2
  3. 求出OutBound的长短边边长,记作MPrefNPref
  4. 平移k1k2过点Pref为线段Prefk1Prefk2
  5. 求线段Prefk1Prefk2的投影线段Prefk1'Prefk2'的长度
  6. 比较投影线段Prefk1'Prefk2'和OutBound的长短边MPrefNPref的长度
    如果Prefk1' <= NPrefPrefk2' <= MPref则,OutBound可以包含ClipRect,
    否则OutBound需要放大max(Prefk1' / NPref, Prefk2' / MPref)才能包含ClipRect
[Utils] 求一个任意角度的矩形是否能够容纳另一个任意角度的矩形_第2张图片
求出ClipRect的辅助线
[Utils] 求一个任意角度的矩形是否能够容纳另一个任意角度的矩形_第3张图片
比较ClipRect对角线和外框边线的长度

你可能感兴趣的:([Utils] 求一个任意角度的矩形是否能够容纳另一个任意角度的矩形)