PyOpenGLでx,y軸の交換テスト

OpenGLで描画対象となる点のx軸とy軸を交換したい。そこで現在の行列に引数の行列を掛けるglMultMatrixでx,y軸を交換する小さなプログラムを書いた。
ネイピア数の指数関数をプロットしたあとにx,y軸を交換してまたプロットする。

# coding: utf-8

import sys
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
from math import exp

axisRange = 7

def exponential():
    glBegin(GL_LINE_STRIP)
    n = 800
    for i in xrange(n):
        x = -axisRange/2. + float(axisRange)/n*i
        y = exp(x)
        glVertex2f(x, y)
    glEnd()

def display():
    glClear(GL_COLOR_BUFFER_BIT)
    
    glColor4f(0,0,0, .5)
    glPointSize(5)
    glBegin(GL_LINES)
    glVertex2f(-axisRange, 0)
    glVertex2f(+axisRange, 0)
    glVertex2f(0, -axisRange)
    glVertex2f(0, +axisRange)
    glEnd()
    
    glColor3f(1, 0, 0)
    exponential()
    
    glColor3f(0, 0, 1)
    glPushMatrix()
    glMultMatrixf([0,1,0,0,  1,0,0,0, 0,0,1,0, 0,0,0,1]) # 交換
    exponential()
    glPopMatrix()
    
    glutSwapBuffers()

def reshape(w, h):
    glViewport(0, 0, w, h)
    glutPostRedisplay()

def keyboard(k, x, y):
    if k in ['q', 'Q', '\033']:
        sys.exit()
    glutPostRedisplay()

def init():
    glClearColor(1, 1, 1, 1)
    glScalef(2./axisRange, 2./axisRange, 1)
    
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glEnable(GL_BLEND);

def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE)
    glutCreateWindow("Transpose X and Y")

    init()

    glutDisplayFunc(display)
    glutReshapeFunc(reshape)
    glutKeyboardFunc(keyboard)

    glutMainLoop()


if __name__ == '__main__':
    main()