2011-05-16 107 views
3

我试图简单地通过y来获取x的给定方框,并通过设置x和找到y来进行扩展,反之亦然。如何用Python表达这个公式(为了可读性)。我试图将这个盒子放在一个更大的盒子里面,这样内盒子就可以放在更大的盒子里。如何按比例(尊重宽高比)缩放矩形?

+1

应该是内部为中心的新的矩形更大的盒子? (即letterboxed?) – Alnitak 2011-05-16 21:12:08

+0

我可以做数学来居中新的矩形,这并不难。我总是被实际的调整大小数学困惑。 – 2011-05-16 21:12:44

回答

6

注:我真的不这样做的Python,所以这是伪代码。

你需要的是两个框的相对高宽比,因为这决定了新的坐标轴必须是大小一样的新对话框:

r_old = old_w/old_h 
r_new = new_w/new_h 

if (r_old > r_new) then 
    w = new_w    // width of mapped rect 
    h = w/r_old   // height of mapped rect 
    x = 0     // x-coord of mapped rect 
    y = (new_h - h)/2 // y-coord of centered mapped rect 
else 
    h = new_h 
    w = h * r_old 
    y = 0 
    x = (new_w - w)/2 
endif 
6

new_y = (float(new_x)/x) * y

new_x = (float(new_y)/y) * x

+0

正是我所需要的没有绒毛 – iksnae 2017-12-11 20:32:15

0
>>> import fractions 
>>> x, y = 10, 10 
>>> fix_rat = fractions.Fraction(x, y) 
>>> fix_rat 
Fraction(1, 1) 
>>> x = 8 
>>> if fractions.Fraction(x, y) != fix_rat: 
    y = x/fix_rat #well instead of y you should put the last one that has been changed 
        #but this is just an example 


>>> y 
Fraction(8, 1) 
>>>