Python 如何调整、缩放或放大OpenGl中绘制的点之间的距离
我正在尝试生成一个给定纬度和经度作为输入的地图。我对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]。所以相乘之
您应该将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()