-
-
Save runiteking1/b0946026d2cad966db1e52c0a28a86c6 to your computer and use it in GitHub Desktop.
Higher order plotting does not work
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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