在另一个矩形中找到最大的16:9矩形。

我正在编写 Lua 脚本,需要能够找到另一个矩形内最大的 16:9 矩形,该矩形不具有特定的长宽比。你能告诉我如何做到这一点吗?你不必写 Lua - 伪代码也可以。

谢谢!

我尝试过以下方法,但无法在比率低的外部矩形上运行。

如果 wOut > hOut:
wIn = wOut
hIn = (wIn / 16) *9
否则:
hIn = hOut
wIn = (hIn / 9) * 16
点赞
用户2260
用户2260

嗯,你的新长方形可以描述为:

h = w / (16/9)
w = h * (16/9)

因此,你的新长方形应该基于外部长方形的宽度,如下:

h = w0 / (16/9)
w = w0

根据 Lua 处理数字的方式,你可能想确保它使用实数除法,而非整数除法 - 我上一次看到它是在 2001 年,而我的记忆正在比咖啡变冷得更快... 不过我似乎记得所有的数字都是浮点数...

2012-08-13 14:13:17
用户942817
用户942817
heightCount = originalHeight / 9;
widthCount = originalWidth / 16;

if (heightCount == 0 || widthCount == 0)
    throw "没有16/9的矩形";

recCount = min(heightCount, widthCount);

targetHeight = recCount * 9;
targetWidth = recCount * 16;

到目前为止,任何左侧为0..(originalWidth-targetWidth)和顶部为0..(originalHeight-targetHeight)、宽度为targetWidth和高度为targetHeight的矩形都应该满足您的要求。

2012-08-13 14:22:54