将点从坐标系(0,800)转换为坐标系(50,-50)jFrame < - > opengl

Ran*_*Guy 4 java opengl math awt coordinates

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

Java AWT:

0,0|------------------------|
   |                        |
   |  (middle p. 400,300)   |
   |                        |
   |------------------------|800,600
Run Code Online (Sandbox Code Playgroud)

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

OpenGL的

  50,50|------------------------|
       |                        |
       |     (middle p. 0,0)    |
       |                        |
       |------------------------|-50,-50
Run Code Online (Sandbox Code Playgroud)

不知道怎么办呢?

Mik*_*ley 5

通常,您要做的是从(矩形)坐标系转换A为坐标系B.

首先将源坐标系映射A到标准化范围[0, 1]:

double nx = x / (x1 - x0);
double ny = y / (y1 - y0);
Run Code Online (Sandbox Code Playgroud)

(x0, y0)左上角在哪里,(x1, y1)是右下角.然后将其映射到新的坐标系:

double px = X0 + nx * (X1 - X0);
double py = Y0 + ny * (Y1 - Y0);
Run Code Online (Sandbox Code Playgroud)

哪里(X0, Y0)是你的新的左上角坐标系(X1, Y1)是新的坐标系的右下角.

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