如何按比例(尊重宽高比)缩放矩形?
问题描述:
我试图简单地通过y
来获取x
的给定方框,并通过设置x
和找到y
来进行扩展,反之亦然。如何用Python表达这个公式(为了可读性)。我试图将这个盒子放在一个更大的盒子里面,这样内盒子就可以放在更大的盒子里。如何按比例(尊重宽高比)缩放矩形?
答
注:我真的不这样做的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
答
new_y = (float(new_x)/x) * y
或
new_x = (float(new_y)/y) * x
+0
正是我所需要的没有绒毛 – iksnae 2017-12-11 20:32:15
答
>>> 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)
>>>
应该是内部为中心的新的矩形更大的盒子? (即letterboxed?) – Alnitak 2011-05-16 21:12:08
我可以做数学来居中新的矩形,这并不难。我总是被实际的调整大小数学困惑。 – 2011-05-16 21:12:44