簡體   English   中英

將點從坐標系(0,800)轉換為坐標系(50,-50)jFrame < - > opengl

[英]Convert point from coordinate system (0,800) to coordinate system (50,-50) jFrame<->opengl

我在以下坐標系中有一點:

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)是新坐標系的右下角。

這適用於任何兩個直角坐標系。

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中減去該值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM