Python 如何调整、缩放或放大OpenGl中绘制的点之间的距离

Python 如何调整、缩放或放大OpenGl中绘制的点之间的距离,python,opengl,scaling,points,Python,Opengl,Scaling,Points,我正在尝试生成一个给定纬度和经度作为输入的地图。我对OpenGL相当陌生。我需要根据给定的点重新生成地图,但为了使它看起来像样,它需要按一定的比例缩放,以便可以适当地查看。这张地图看起来很像。关于如何缩放地图以使其适合窗口大小的任何想法。 您应该将gluOrtho2D更改为gluOrtho2DminX,maxX,minY,maxY,这将更好地定位相机-根据图像,我尝试将700替换为300我发现这是一个简单的数学问题。使用缩放矩阵[4,0,0,0,4,0,0,0,1]*[x,y,1]。所以相乘之

我正在尝试生成一个给定纬度和经度作为输入的地图。我对OpenGL相当陌生。我需要根据给定的点重新生成地图,但为了使它看起来像样,它需要按一定的比例缩放,以便可以适当地查看。这张地图看起来很像。关于如何缩放地图以使其适合窗口大小的任何想法。


您应该将gluOrtho2D更改为gluOrtho2DminX,maxX,minY,maxY,这将更好地定位相机-根据图像,我尝试将700替换为300

我发现这是一个简单的数学问题。使用缩放矩阵[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()

因此,我得到的最终pt是[4x,4y,1],即4x,4y。对不起,这件事太琐碎了,不能在这里问。
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()