如何按比例缩放矩形(保持长宽比)?

3 投票
3 回答
4927 浏览
提问于 2025-04-16 17:45

我想要把一个给定的盒子,宽度是 x,高度是 y,放大一下。可以通过设置 x 来找到 y,或者反过来。这个公式在Python中应该怎么写(为了让人看得懂)?我想把这个小盒子放进一个更大的盒子里,确保小盒子总是能放进大盒子里。

3 个回答

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)
>>> 

这段代码是用来做某些操作的,但具体的功能和上下文没有提供。通常情况下,代码块里会包含一些编程指令,可能是用来处理数据、执行计算或者控制程序的流程。

如果你看到这样的代码块,通常意味着它是一个示例,展示了如何使用某种编程语言来实现特定的功能。理解这些代码的关键在于知道它们的作用和如何在你的项目中应用。

如果你有具体的代码或问题,可以进一步询问,这样我可以帮助你更好地理解。

6

这段代码的意思是,我们在计算新的值。具体来说,

new_y = (float(new_x) / x) * y 这行代码的意思是:先把新的x值(new_x)转换成浮点数,然后用这个值去除以原来的x值,最后再乘以原来的y值,得到新的y值(new_y)。

new_x = (float(new_y) / y) * x 这行代码则是:先把新的y值(new_y)转换成浮点数,然后用这个值去除以原来的y值,最后再乘以原来的x值,得到新的x值(new_x)。

简单来说,这两行代码是在根据一个值来计算另一个值,保持它们之间的比例关系。

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

撰写回答