2014-03-03 48 views
0

我試圖生成一個以緯度和經度爲輸入的地圖。我對OpenGL相當陌生。我需要基於給定的點重新生成地圖,但爲了使它看起來體面,它需要按比例縮放到一個大小,以便可以適當地查看它。地圖看起來非常聚集。關於如何縮放地圖以適應窗口大小的任何想法。 enter image description here如何調整大小,縮放或放大OpenGl中繪製的點之間的距離

from OpenGL.GL import * 
from OpenGL.GLUT import * 
from OpenGL.GLU import * 

import math 

def initFun(): 
    glClearColor(1.0,1.0,1.0,0.0) 
    glColor3f(0.0,0.0, 0.0) 
    glMatrixMode(GL_PROJECTION) 
    glLoadIdentity() 
    gluOrtho2D(0,700,0,700) 

def displayFun(): 
    glClear(GL_COLOR_BUFFER_BIT) 
    glColor3f(0.0,0.0,1.0) 
    xpts=[] 
    ypts=[] 
    N=len(newlist) 
    for i in range(0,N): 
     xpts.append(float(newlist[i][4])) 
     ypts.append(float(newlist[i][5])) 

    glBegin(GL_POINTS) 
    for j in range(0,N):   
     glVertex2f(xpts[j],ypts[j]) 

    glEnd() 
    glFlush() 

if __name__ == '__main__': 
    glutInit() 
    glutInitWindowSize(700,700) 
    glutCreateWindow("My Display") 
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) 
    glutDisplayFunc(displayFun) 
    initFun() 
    glutMainLoop() 

回答

0

更換700我想通了,這是一些簡單的數學做。使用縮放矩陣[4,0,0,0,4,0,0,0,1] * [x,y,1]。所以在乘以後我們得到[4x,4y,1]。所以,如果我們將所有點相乘,圖像就會縮放。在學校學習這一點。地圖也倒過來了。所以,我的程序終於看起來像這樣

from OpenGL.GL import * 
from OpenGL.GLUT import * 
from OpenGL.GLU import * 

import math 

def initFun(): 
    glClearColor(1.0,1.0,1.0,0.0) 
    glColor3f(0.0,0.0, 0.0) 
    glMatrixMode(GL_PROJECTION) 
    glLoadIdentity() 
    gluOrtho2D(0,700,0,700) 

def displayFun(): 
    glClear(GL_COLOR_BUFFER_BIT) 
    glColor3f(0.0,0.0,1.0) 
    xpts=[] 
    ypts=[] 
    N=len(newlist) 
    for i in range(0,N): 
     xpts.append(700+100-float(newlist[i][4])*20) 
     ypts.append(700+1300-float(newlist[i][5])*20) 

    glBegin(GL_POINTS) 
    for j in range(0,N):   
     glVertex2f(xpts[j],ypts[j]) 

    glEnd() 
    glFlush() 

if __name__ == '__main__': 
    glutInit() 
    glutInitWindowSize(700,700) 
    glutCreateWindow("My Display") 
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) 
    glutDisplayFunc(displayFun) 
    initFun() 
    glutMainLoop() 
+0

所以最終的Pt我得到的是[4X,4Y,1]即(4X,4Y)。對不起,在這裏被問到這太微不足道了。 –

0

你應該改變gluOrtho2DgluOrtho2D(minX,maxX,minY,maxY)將定位的照相機 - 基於圖像我會嘗試用300