Skip to content

Instantly share code, notes, and snippets.

@runiteking1
Created August 7, 2017 20:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save runiteking1/b0946026d2cad966db1e52c0a28a86c6 to your computer and use it in GitHub Desktop.
Save runiteking1/b0946026d2cad966db1e52c0a28a86c6 to your computer and use it in GitHub Desktop.
Higher order plotting does not work
try:
from OpenGL.GLUT import *
from OpenGL.GL import *
from OpenGL.GLU import *
except:
print ''' Error: PyOpenGL is not installed properly !!'''
sys.exit()
global Xangle, Yangle, Zangle
Xangle = 0
Zangle = 0
Yangle = 0
global height, xlook, ylook
height = 3.0
xlook = .5
ylook = .5
global patches
# 8th order
one_patch = [[[ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00],
[ 8.75000000e-01, 0.00000000e+00, 0.00000000e+00],
[ 7.50000000e-01, 0.00000000e+00, 0.00000000e+00],
[ 6.25000000e-01, 0.00000000e+00, 0.00000000e+00],
[ 5.00000000e-01, 0.00000000e+00, 0.00000000e+00],
[ 3.75000000e-01, 0.00000000e+00, 0.00000000e+00],
[ 2.50000000e-01, 0.00000000e+00, 0.00000000e+00],
[ 1.25000000e-01, 0.00000000e+00, 0.00000000e+00],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 9.37500000e-01, 6.25000000e-02, 4.46428571e-03],
[ 8.20312500e-01, 5.46875000e-02, 8.73161765e-02],
[ 7.03125000e-01, 4.68750000e-02, 6.61764706e-02],
[ 5.85937500e-01, 3.90625000e-02, 7.50065651e-02],
[ 4.68750000e-01, 3.12500000e-02, 6.00052521e-02],
[ 3.51562500e-01, 2.34375000e-02, 3.30882353e-02],
[ 2.34375000e-01, 1.56250000e-02, 2.49474790e-02],
[ 1.17187500e-01, 7.81250000e-03, 5.58035714e-04],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 8.75000000e-01, 1.25000000e-01, 9.19156264e-02],
[ 7.65625000e-01, 1.09375000e-01, 1.33980223e-01],
[ 6.56250000e-01, 9.37500000e-02, 1.51727259e-01],
[ 5.46875000e-01, 7.81250000e-02, 1.31944382e-01],
[ 4.37500000e-01, 6.25000000e-02, 1.14142284e-01],
[ 3.28125000e-01, 4.68750000e-02, 6.28450138e-02],
[ 2.18750000e-01, 3.12500000e-02, 4.60498078e-02],
[ 1.09375000e-01, 1.56250000e-02, 1.11607143e-03],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 8.12500000e-01, 1.87500000e-01, 1.54008203e-01],
[ 7.10937500e-01, 1.64062500e-01, 2.08706551e-01],
[ 6.09375000e-01, 1.40625000e-01, 2.18145654e-01],
[ 5.07812500e-01, 1.17187500e-01, 1.81015101e-01],
[ 4.06250000e-01, 9.37500000e-02, 1.60184515e-01],
[ 3.04687500e-01, 7.03125000e-02, 8.89593197e-02],
[ 2.03125000e-01, 4.68750000e-02, 6.33069864e-02],
[ 1.01562500e-01, 2.34375000e-02, 1.67410714e-03],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 7.50000000e-01, 2.50000000e-01, 2.41399682e-01],
[ 6.56250000e-01, 2.18750000e-01, 2.72224820e-01],
[ 5.62500000e-01, 1.87500000e-01, 2.66449763e-01],
[ 4.68750000e-01, 1.56250000e-01, 2.24759040e-01],
[ 3.75000000e-01, 1.25000000e-01, 1.96624738e-01],
[ 2.81250000e-01, 9.37500000e-02, 1.11120137e-01],
[ 1.87500000e-01, 6.25000000e-02, 7.67190148e-02],
[ 9.37500000e-02, 3.12500000e-02, 2.23214286e-03],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 6.87500000e-01, 3.12500000e-01, 3.00331349e-01],
[ 6.01562500e-01, 2.73437500e-01, 3.16077807e-01],
[ 5.15625000e-01, 2.34375000e-01, 3.05012187e-01],
[ 4.29687500e-01, 1.95312500e-01, 2.61112409e-01],
[ 3.43750000e-01, 1.56250000e-01, 2.22675128e-01],
[ 2.57812500e-01, 1.17187500e-01, 1.29016450e-01],
[ 1.71875000e-01, 7.81250000e-02, 8.62858930e-02],
[ 8.59375000e-02, 3.90625000e-02, 2.79017857e-03],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 6.25000000e-01, 3.75000000e-01, 3.46167742e-01],
[ 5.46875000e-01, 3.28125000e-01, 3.52029906e-01],
[ 4.68750000e-01, 2.81250000e-01, 3.34012977e-01],
[ 3.90625000e-01, 2.34375000e-01, 2.86464538e-01],
[ 3.12500000e-01, 1.87500000e-01, 2.38267234e-01],
[ 2.34375000e-01, 1.40625000e-01, 1.42337242e-01],
[ 1.56250000e-01, 9.37500000e-02, 9.20076210e-02],
[ 7.81250000e-02, 4.68750000e-02, 3.34821429e-03],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 5.62500000e-01, 4.37500000e-01, 3.68356556e-01],
[ 4.92187500e-01, 3.82812500e-01, 3.68240517e-01],
[ 4.21875000e-01, 3.28125000e-01, 3.46515857e-01],
[ 3.51562500e-01, 2.73437500e-01, 2.98715103e-01],
[ 2.81250000e-01, 2.18750000e-01, 2.44051984e-01],
[ 2.10937500e-01, 1.64062500e-01, 1.50771499e-01],
[ 1.40625000e-01, 1.09375000e-01, 9.38841988e-02],
[ 7.03125000e-02, 5.46875000e-02, 3.90625000e-03],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 5.00000000e-01, 5.00000000e-01, 3.68356556e-01],
[ 4.37500000e-01, 4.37500000e-01, 3.68356556e-01],
[ 3.75000000e-01, 3.75000000e-01, 3.46167742e-01],
[ 3.12500000e-01, 3.12500000e-01, 3.00331349e-01],
[ 2.50000000e-01, 2.50000000e-01, 2.41399682e-01],
[ 1.87500000e-01, 1.87500000e-01, 1.54008203e-01],
[ 1.25000000e-01, 1.25000000e-01, 9.19156264e-02],
[ 6.25000000e-02, 6.25000000e-02, 4.46428571e-03],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]]
# 7h order (works)
one_patch = [[[ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00],
[ 8.57142857e-01, 0.00000000e+00, 0.00000000e+00],
[ 7.14285714e-01, 0.00000000e+00, 0.00000000e+00],
[ 5.71428571e-01, 0.00000000e+00, 0.00000000e+00],
[ 4.28571429e-01, 0.00000000e+00, 0.00000000e+00],
[ 2.85714286e-01, 0.00000000e+00, 0.00000000e+00],
[ 1.42857143e-01, 0.00000000e+00, 0.00000000e+00],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 9.28571429e-01, 7.14285714e-02, 6.61375661e-03],
[ 7.95918367e-01, 6.12244898e-02, 1.06354136e-01],
[ 6.63265306e-01, 5.10204082e-02, 7.66127707e-02],
[ 5.30612245e-01, 4.08163265e-02, 8.51983305e-02],
[ 3.97959184e-01, 3.06122449e-02, 4.59676624e-02],
[ 2.65306122e-01, 2.04081633e-02, 3.54513786e-02],
[ 1.32653061e-01, 1.02040816e-02, 9.44822373e-04],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 8.57142857e-01, 1.42857143e-01, 1.13774489e-01],
[ 7.34693878e-01, 1.22448980e-01, 1.65769696e-01],
[ 6.12244898e-01, 1.02040816e-01, 1.63545311e-01],
[ 4.89795918e-01, 8.16326531e-02, 1.52680409e-01],
[ 3.67346939e-01, 6.12244898e-02, 8.73538801e-02],
[ 2.44897959e-01, 4.08163265e-02, 6.45034638e-02],
[ 1.22448980e-01, 2.04081633e-02, 1.88964475e-03],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 7.85714286e-01, 2.14285714e-01, 1.90124130e-01],
[ 6.73469388e-01, 1.83673469e-01, 2.41457629e-01],
[ 5.61224490e-01, 1.53061224e-01, 2.35137533e-01],
[ 4.48979592e-01, 1.22448980e-01, 2.05240067e-01],
[ 3.36734694e-01, 9.18367347e-02, 1.23146105e-01],
[ 2.24489796e-01, 6.12244898e-02, 8.71562556e-02],
[ 1.12244898e-01, 3.06122449e-02, 2.83446712e-03],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 7.14285714e-01, 2.85714286e-01, 2.81139058e-01],
[ 6.12244898e-01, 2.44897959e-01, 3.07872757e-01],
[ 5.10204082e-01, 2.04081633e-01, 2.85385763e-01],
[ 4.08163265e-01, 1.63265306e-01, 2.44499935e-01],
[ 3.06122449e-01, 1.22448980e-01, 1.52331791e-01],
[ 2.04081633e-01, 8.16326531e-02, 1.03409754e-01],
[ 1.02040816e-01, 4.08163265e-02, 3.77928949e-03],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 6.42857143e-01, 3.57142857e-01, 3.38300257e-01],
[ 5.51020408e-01, 3.06122449e-01, 3.46339574e-01],
[ 4.59183673e-01, 2.55102041e-01, 3.18201039e-01],
[ 3.67346939e-01, 2.04081633e-01, 2.70911439e-01],
[ 2.75510204e-01, 1.53061224e-01, 1.73898388e-01],
[ 1.83673469e-01, 1.02040816e-01, 1.13263959e-01],
[ 9.18367347e-02, 5.10204082e-02, 4.72411187e-03],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 5.71428571e-01, 4.28571429e-01, 3.68357488e-01],
[ 4.89795918e-01, 3.67346939e-01, 3.68610625e-01],
[ 4.08163265e-01, 3.06122449e-01, 3.37667415e-01],
[ 3.26530612e-01, 2.44897959e-01, 2.83754806e-01],
[ 2.44897959e-01, 1.83673469e-01, 1.86833351e-01],
[ 1.63265306e-01, 1.22448980e-01, 1.16718871e-01],
[ 8.16326531e-02, 6.12244898e-02, 5.66893424e-03],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],
[[ 5.00000000e-01, 5.00000000e-01, 3.68357488e-01],
[ 4.28571429e-01, 4.28571429e-01, 3.68357488e-01],
[ 3.57142857e-01, 3.57142857e-01, 3.38300257e-01],
[ 2.85714286e-01, 2.85714286e-01, 2.81139058e-01],
[ 2.14285714e-01, 2.14285714e-01, 1.90124130e-01],
[ 1.42857143e-01, 1.42857143e-01, 1.13774489e-01],
[ 7.14285714e-02, 7.14285714e-02, 6.61375661e-03],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]]
def drawScene():
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glLoadIdentity()
gluLookAt(0.5, 0.5, height, xlook, ylook, 1, 0.0, 1.0, 0.0)
glTranslatef(0.5, 0.5, 0.0)
glRotatef(Zangle, 0.0, 0.0, 1.0)
glTranslatef(-0.5, -0.5, 0.0)
glTranslatef(0.5, 0, 0.0)
glRotatef(Yangle, 0.0, 1.0, 0.0)
glTranslatef(-.5, 0, 0.0)
glTranslatef(0, .5, 0)
glRotatef(Xangle, 1.0, 0.0, 0.0)
glTranslatef(0, -.5, 0)
resolution = 10
glMap2d(GL_MAP2_VERTEX_3, 0, 1, 0, 1, one_patch)
glEnable(GL_MAP2_VERTEX_3)
glColor3f(0.0, 0.0, 0.0)
glMapGrid2f(resolution, 0.0, 1.0, resolution, 0.0, 1.0)
glEvalMesh2(GL_FILL, 0, resolution, 0, resolution)
glutSwapBuffers()
def keyInput(ch, x, y):
global Xangle, Yangle, Zangle
if (ch == chr(27)):
sys.exit(0)
elif ch == 'x':
Xangle += 5.0
if Xangle > 360:
Xangle -= 360
glutPostRedisplay()
elif ch == 'X':
Xangle -= 5.0
if Xangle < 0:
Xangle += 360
glutPostRedisplay()
elif ch == 'y':
Yangle += 5.0
if Yangle > 360:
Yangle -= 360
glutPostRedisplay()
elif ch == 'Y':
Yangle -= 5.0
if Yangle < 0:
Yangle += 360
glutPostRedisplay()
elif ch == 'z':
Zangle += 5.0
if Zangle > 360:
Zangle -= 360
glutPostRedisplay()
elif ch == 'Z':
Zangle -= 5.0
if Zangle < 0:
Zangle += 360
glutPostRedisplay()
def specialKey(ch, x, y):
global height, xlook, ylook
if ch == GLUT_KEY_LEFT:
xlook -= .1
glutPostRedisplay()
elif ch == GLUT_KEY_RIGHT:
xlook += .1
glutPostRedisplay()
elif ch == GLUT_KEY_UP:
ylook += .1
glutPostRedisplay()
elif ch == GLUT_KEY_DOWN:
ylook -= .1
glutPostRedisplay()
elif ch == GLUT_KEY_PAGE_UP:
height += .1
glutPostRedisplay()
elif ch == GLUT_KEY_PAGE_DOWN:
if height > 1:
height -= .1
else:
print "Rescale problem please; Too lazy to do dynamic scaling"
glutPostRedisplay()
def init():
# So we don't see what we shouldn't see
glEnable(GL_DEPTH_TEST)
glDepthFunc(GL_LESS)
glEnable(GL_LIGHTING)
glEnable(GL_LIGHT0)
glEnable(GL_AUTO_NORMAL)
# glEnable(GL_NORMALIZE)
glLightfv(GL_LIGHT0, GL_AMBIENT, [.2, .2, .2, 1])
glLightfv(GL_LIGHT0, GL_POSITION, [0, 0, 2, 1])
# glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, 0);
glMaterialfv(GL_FRONT, GL_DIFFUSE, [.6, .6, .6, 1])
glMaterialfv(GL_FRONT, GL_DIFFUSE, [0.61424, 0.04136, 0.04136])
glMaterialfv(GL_FRONT, GL_SPECULAR, [0.727811, 0.626959, 0.626959])
glMaterialf(GL_FRONT, GL_SHININESS, 0.6*128.0)
glClearColor(0.5, 0.5, 0.5, 1.0);
glColor3f(1.0, 1.0, 1.0);
def resize(w, h):
glViewport(0, 0, w, h)
aspect = w/(1.0*h)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(60.0, aspect, 0.5, 20.0)
glMatrixMode(GL_MODELVIEW)
def opengl_plot():
glutInit(sys.argv)
glutInitContextVersion(4, 3)
glutInitContextProfile(GLUT_COMPATIBILITY_PROFILE)
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA)
glutInitWindowSize(500, 500)
glutInitWindowPosition(100, 100)
glutCreateWindow("Plot")
init()
glutDisplayFunc(drawScene)
glutReshapeFunc(resize)
glutKeyboardFunc(keyInput)
glutSpecialFunc(specialKey)
glClearColor(1.0, 1.0, 1.0, 0.0)
glutMainLoop()
def main():
opengl_plot()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment