我在以下坐标系中有一个点:
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)
是新坐标系的右下角。这适用于任何两个直角坐标系。