我正在研究词云生成。
我的话应该出现在 (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 * 更大/更小,那么 S2 大小的值是多少,这将是在以 r 的比率缩放后单词的新大小?