【问题标题】:How do I translate and scale points within a bounding box?如何在边界框中平移和缩放点?
【发布时间】:2013-02-27 05:05:59
【问题描述】:

我有很多(x, y) 形式的点P,其中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 是负数时这将不起作用。

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

【问题讨论】:

    标签: algorithm math point pseudocode bounding-box


    【解决方案1】:
    1. 为您的点集找出所有 yMin、yMax、xMin、xMax、xDelta = xMax-xMin 和 yDelta = yMax-yMin。
    2. 设置最大值 = 最大 (xDelta,yDelta)。
    3. Foreach Point p set p.X = (p.X - xMin) * scale and p.Y = (p.Y - yMin) * scale

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多