如何在边界框内翻译和缩放点?

时间:2013-03-11 20:57:16

标签: algorithm math point pseudocode bounding-box

我有一些{em> 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.xp.y为负数时,这不起作用。

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

1 个答案:

答案 0 :(得分:2)

  1. 查找所有yMin,yMax,xMin,xMax,xDelta = xMax-xMin和yDelta = yMax-yMin以获取您的点数。
  2. 设置max = maximum(xDelta,yDelta)。
  3. Foreach Point p set p.X =(p.X - xMin)* scale and p.Y =(p.Y - yMin)* scale