0

我正在处理这个 Lua 脚本,我需要能够在另一个没有特定纵横比的矩形中找到最大的 16:9 矩形。那么你能告诉我我该怎么做吗?您不必编写 Lua - 伪代码也可以。

谢谢!

我已经尝试过并且可以确认这不适用于较低比率的外部矩形。

if wOut > hOut then 
wIn = wOut
hIn = (wIn / 16) *9
else 
hIn = hOut
wIn = (hIn / 9) * 16 
end
4

2 回答 2

1
heightCount = originalHeight / 9;
widthCount = originalWidth / 16;

if (heightCount == 0 || widthCount == 0)
    throw "No 16/9 rectangle";

recCount = min(heightCount, widthCount);

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

到目前为止,left = 0..(originalWidth - targetWidth) 和 top = 0..(originalHeight - targetHeight) 和 width = targetWidth 和 height = targetHeight 的任何矩形都应该满足您的要求。

于 2012-08-13T14:22:54.790 回答
0

好吧,您的新矩形可以描述为:

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

然后,您的新矩形应基于外部矩形的宽度,因此:

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

根据 Lua 处理数字的方式,您可能需要确保它使用的是实数除法而不是整数除法 - 我上次查看是 2001 年,我的记忆力恶化的速度比咖啡变冷的速度更快,但我似乎记得所有数字无论如何都是漂浮的......

于 2012-08-13T14:13:17.200 回答