4

私は次の座標系にポイントがあります:

Java AWT:

0,0|------------------------|
   |                        |
   |  (middle p. 400,300)   |
   |                        |
   |------------------------|800,600

そして私はそれを次のシステムに変換したいと思います:

OpenGL

  50,50|------------------------|
       |                        |
       |     (middle p. 0,0)    |
       |                        |
       |------------------------|-50,-50

どうすればいいですか?

4

2 に答える 2

5

一般に、実行したいのは(直交)座標系Aから座標系に変換することですB

まず、ソース座標系Aを正規化された範囲にマップし[0, 1]ます。

double nx = x / (x1 - x0);
double ny = y / (y1 - y0);

(x0, y0)は左上隅で、(x1, y1)は右下隅です。次に、それを新しい座標系にマップします。

double px = X0 + nx * (X1 - X0);
double py = Y0 + ny * (Y1 - Y0);

(X0, Y0)は新しい座標系の左上隅で、は新しい座標系(X1, Y1)の右下隅です。

これは、任意の2つの直交座標系で機能します。

于 2012-07-03T15:21:54.263 に答える
2
public Point awtToOpenGL(Point p) {
  Point newP = new Point();
  newP.setX(50 - (p.getX() / 8));
  newP.setY(50 - (p.getY() / 6));
  return newP;
}

[編集]オリゴを間違えました。新しい試み。

openGLシステムは100幅で、AWTは800幅なので、x値を8で割る必要があります。同じロジックでyを6で割る必要があります。xとyはどちらも50から始まり、すべて下がるので、次に、50から値を減算します。

于 2012-07-03T14:38:58.497 に答える