ワードクラウドの生成に取り組んでいます。
私の単語は (0, 0, w, h) の長方形に表示されます。w は最大幅、h は最大高さです。
ワード クラウドを生成するためのアルゴリズムは既にありますが、単語が四角形の境界の外に出たり、未使用のスペースが多すぎたりすることがあります。ワード クラウドの実際の境界は (0, 0, maxX, maxY) です。
スケーリングの私の考えは次のようになります。
if (maxX > w) then
if (maxY > h) then
if (maxX / w) > (maxY / h) then
scale(w / maxX)
else
scale(h / maxY)
end if
else
scale(w / maxX)
end if
else if (maxY > h) then
scale(h / maxY)
else if ((maxX < w) and (maxY < h)) then
if (maxX / w) > (maxY / h) then
scale(w / maxX)
else
scale(h / maxY)
end if
end if
(x1, y1, x2, y2) の長方形に単語があるとします。scale(1.5) を呼び出すと、長方形の新しい位置は (1.5 * x1, 1.5 * y1, 1.5 * x2, 1.5 * y2) になります。これは非常に素晴らしくシンプルですが、これには問題があります。
単語のサイズは以前は S1 で、座標 (x1、y1、x2、y2) にありました。r でスケーリングする場合、新しい座標は (r * x1、r * y1、r * x2、r * y2) になります。質問: 単語が r * 大きい/小さいことがわかっている場合、r の割合でスケーリングした後の単語の新しいサイズである S2 サイズの値は?