[英]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.