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 に答える