我在以下坐标系中有一个点:

Java AWT:

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

我想将其转换为以下系统:

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

知道我该怎么做吗?

最佳答案

通常,您想要做的是从(矩形)坐标系 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) 是新坐标系的右下角。

这适用于任何两个直角坐标系。

10-08 01:56