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. max = maximum(xDelta、yDelta)に設定します。
  3. ForeachポイントpセットpX=(pX-xMin)*スケールおよびpY =(pY-yMin)*スケール
于 2013-03-11T21:05:52.663 に答える