我正在处理这个 Lua 脚本,我需要能够在另一个没有特定纵横比的矩形中找到最大的 16:9 矩形。那么你能告诉我我该怎么做吗?您不必编写 Lua - 伪代码也可以。
谢谢!
我已经尝试过并且可以确认这不适用于较低比率的外部矩形。
if wOut > hOut then
wIn = wOut
hIn = (wIn / 16) *9
else
hIn = hOut
wIn = (hIn / 9) * 16
end
我正在处理这个 Lua 脚本,我需要能够在另一个没有特定纵横比的矩形中找到最大的 16:9 矩形。那么你能告诉我我该怎么做吗?您不必编写 Lua - 伪代码也可以。
谢谢!
我已经尝试过并且可以确认这不适用于较低比率的外部矩形。
if wOut > hOut then
wIn = wOut
hIn = (wIn / 16) *9
else
hIn = hOut
wIn = (hIn / 9) * 16
end
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 的任何矩形都应该满足您的要求。
好吧,您的新矩形可以描述为:
h = w / (16/9)
w = h * (16/9)
然后,您的新矩形应基于外部矩形的宽度,因此:
h = w0 / (16/9)
w = w0
根据 Lua 处理数字的方式,您可能需要确保它使用的是实数除法而不是整数除法 - 我上次查看是 2001 年,我的记忆力恶化的速度比咖啡变冷的速度更快,但我似乎记得所有数字无论如何都是漂浮的......