Algorithm 如何在边界框中平移和缩放点?

Algorithm 如何在边界框中平移和缩放点?,algorithm,math,point,pseudocode,bounding-box,Algorithm,Math,Point,Pseudocode,Bounding Box,我有许多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 - 50

我有许多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
为负数时,这将不起作用

我还想保持点的“形状”

  • 为您的点集查找所有的yMin、yMax、xMin、xMax、xDelta=xMax xMin和yDelta=yMax yMin
  • 设置最大值=最大值(xDelta,yDelta)
  • 每个点p集p.X=(p.X-xMin)*标度和p.Y=(p.Y-yMin)*标度