不不不,这算法太麻烦了,过两天我忙完了,换一个新算法~= ̄ω ̄=
可能的布局情况
提设
- 外部矩形记作OutBound
- 内部矩形记住ClipRect
- 求ClipRect是否已经被OutBound完全包含,如果没有包含,需要把OutBound平移多少才能包含ClipRect?如果平移不能达成包含的目的,需要把OutBound放大并平移多少才能包含ClipRect?
思路
- 求出ClipRect的对角线长度,记作clipRectDiagonalLength
- 求出ClipRect两条对角线的斜率,记作k1和k2
- 求出OutBound的长短边边长,记作MPref和NPref
- 平移k1和k2过点Pref为线段Prefk1为Prefk2
- 求线段Prefk1为Prefk2的投影线段Prefk1'和Prefk2'的长度
- 比较投影线段Prefk1'和Prefk2'和OutBound的长短边MPref和NPref的长度
如果Prefk1' <= NPref且Prefk2' <= MPref则,OutBound可以包含ClipRect,
否则OutBound需要放大max(Prefk1' / NPref, Prefk2' / MPref)才能包含ClipRect
求出ClipRect的辅助线
比较ClipRect对角线和外框边线的长度