0

我有许多实数形式的点P。我想在边界框(矩形)内平移和缩放所有这些点,该边界框从点(左上角)开始并延伸到点(右下角)。(x, y)x,y(0,0)(1000, 1000)

为什么以下算法不会在该边界框中产生点?

for Point p in P:
    max = greatest(p.x, p.y, max)

scale = 1000 / max
for Point p in P:
    p.x = (p.x - 500) * scale + 500
    p.y = (p.y - 500) * scale + 500

我担心这在负数p.x时不起作用。p.y

我还想保持点的“形状”。

4

1 回答 1

2
  1. 为您的点集找到所有 yMin、yMax、xMin、xMax、xDelta = xMax-xMin 和 yDelta = yMax-yMin。
  2. 设置最大值 = 最大(xDelta,yDelta)。
  3. Foreach Point p set pX = (pX - xMin) * scale and pY = (pY - yMin) * scale
于 2013-03-11T21:05:52.663 回答