if key == ' ': fbo.save(on_display, "gl-circles.png") # ----------------------------------------------------------------------------- if __name__ == '__main__': from glagg import CircleCollection glut.glutInit(sys.argv) glut.glutInitDisplayMode(glut.GLUT_DOUBLE | glut.GLUT_RGB) glut.glutCreateWindow("OpenGL antialiased circles") glut.glutReshapeWindow(512, 512 + 32) glut.glutDisplayFunc(on_display) glut.glutReshapeFunc(on_reshape) glut.glutKeyboardFunc(on_keyboard) collection = CircleCollection() radius = 255.0 theta, dtheta = 0, 5.5 / 180.0 * np.pi for i in range(500): theta += dtheta x = 256 + radius * np.cos(theta) y = 256 + 32 + radius * np.sin(theta) r = 10.1 - i * 0.02 radius -= 0.45 collection.append(center=(x, y), radius=r) for i in range(0, 39): linewidth = (i + 1) / 10.0 x = 20 + i * 12.5 - r y = 16 collection.append(center=(x, y), radius=4, linewidth=linewidth)
if __name__ == "__main__": from glagg import LineCollection, CircleCollection glut.glutInit(sys.argv) glut.glutInitDisplayMode(glut.GLUT_DOUBLE | glut.GLUT_RGB | glut.GLUT_DEPTH) glut.glutInitWindowSize(512, 512) glut.glutCreateWindow("Dynamic graph") glut.glutDisplayFunc(on_display) glut.glutReshapeFunc(on_reshape) glut.glutKeyboardFunc(on_keyboard) glut.glutMouseFunc(on_mouse) glut.glutMotionFunc(on_motion) nodes, links = graph() circles = CircleCollection() lines = LineCollection() for node in nodes: position = node["position"] circles.append(center=position, radius=5, linewidth=2, fg_color=(1, 1, 1, 1), bg_color=(1, 0.5, 0.5, 1)) src = nodes[links["source"]]["position"] tgt = nodes[links["target"]]["position"] V = np.array(zip(src, tgt)).reshape(2 * len(src), 2) lines.append(V, linewidth=1.5, color=(0.75, 0.75, 0.75, 1.00)) drag, index = False, -1 fps = 60 glut.glutTimerFunc(1000 / fps, on_timer, fps) glut.glutMainLoop()
glut.glutPostRedisplay() def on_timer(fps): collection.fg_color[...,3] -= .01 collection.radius += 1.0 glut.glutTimerFunc(1000/fps, on_timer, fps) glut.glutPostRedisplay() # ----------------------------------------------------------------------------- if __name__ == '__main__': import sys import OpenGL.GLUT as glut from glagg import CircleCollection glut.glutInit(sys.argv) glut.glutInitDisplayMode(glut.GLUT_DOUBLE | glut.GLUT_RGB | glut.GLUT_DEPTH) glut.glutCreateWindow("Antialiased thick circles") glut.glutReshapeWindow(800, 800) glut.glutDisplayFunc(on_display) glut.glutReshapeFunc(on_reshape) glut.glutKeyboardFunc(on_keyboard) glut.glutPassiveMotionFunc(on_passive_motion) glut.glutTimerFunc(1000/60, on_timer, 60) index = 0 collection = CircleCollection() for i in range(500): collection.append(linewidth=1.5, radius = 1, fg_color = (1,1,1,0)) glut.glutMainLoop()
circles.append( center = p3, radius = 4, fg_color=(0.0,0.0,1.0,1.0) ) # ----------------------------------------------------------------------------- if __name__ == '__main__': import sys import OpenGL.GLUT as glut from glagg import curve3_bezier, curve4_bezier from glagg import PathCollection, CircleCollection glut.glutInit(sys.argv) glut.glutInitDisplayMode(glut.GLUT_DOUBLE | glut.GLUT_RGB | glut.GLUT_DEPTH) glut.glutInitWindowSize(800, 800) glut.glutCreateWindow("Dynamic cubic Bézier curve [drag handles with mouse]") glut.glutDisplayFunc(on_display) glut.glutReshapeFunc(on_reshape) glut.glutKeyboardFunc(on_keyboard) glut.glutMouseFunc(on_mouse) glut.glutMotionFunc(on_motion) glut.glutPassiveMotionFunc(on_passive_motion) paths = PathCollection() circles = CircleCollection() drag,index = False, -1 points = np.array( [ (100.,400.), (400.,700.), (500.,100.), (700.,400.) ] ) add_bezier(*points) glut.glutMainLoop()
if key == ' ': fbo.save( on_display, "gl-circles.png") # ----------------------------------------------------------------------------- if __name__ == '__main__': from glagg import CircleCollection glut.glutInit(sys.argv) glut.glutInitDisplayMode(glut.GLUT_DOUBLE | glut.GLUT_RGB) glut.glutCreateWindow("OpenGL antialiased circles") glut.glutReshapeWindow(512, 512+32) glut.glutDisplayFunc(on_display) glut.glutReshapeFunc(on_reshape) glut.glutKeyboardFunc(on_keyboard) collection = CircleCollection() radius = 255.0 theta, dtheta = 0, 5.5/180.0*np.pi for i in range(500): theta += dtheta x = 256+radius*np.cos(theta) y = 256+32+radius*np.sin(theta) r = 10.1-i*0.02 radius -= 0.45 collection.append(center=(x,y), radius=r) for i in range(0,39): linewidth = (i+1)/10.0 x = 20+i*12.5 - r y = 16 collection.append(center=(x,y), radius=4, linewidth=linewidth)
def on_timer(fps): collection.fg_color[..., 3] -= .01 collection.radius += 1.0 glut.glutTimerFunc(1000 / fps, on_timer, fps) glut.glutPostRedisplay() # ----------------------------------------------------------------------------- if __name__ == '__main__': import sys import OpenGL.GLUT as glut from glagg import CircleCollection glut.glutInit(sys.argv) glut.glutInitDisplayMode(glut.GLUT_DOUBLE | glut.GLUT_RGB | glut.GLUT_DEPTH) glut.glutInitWindowSize(800, 800) glut.glutCreateWindow("Circle rain") glut.glutDisplayFunc(on_display) glut.glutReshapeFunc(on_reshape) glut.glutKeyboardFunc(on_keyboard) glut.glutPassiveMotionFunc(on_passive_motion) glut.glutTimerFunc(1000 / 60, on_timer, 60) index = 0 collection = CircleCollection() for i in range(500): collection.append(linewidth=1.5, radius=1, fg_color=(1, 1, 1, 0)) glut.glutMainLoop()
from glagg import LineCollection, CircleCollection glut.glutInit(sys.argv) glut.glutInitDisplayMode(glut.GLUT_DOUBLE | glut.GLUT_RGB | glut.GLUT_DEPTH) glut.glutInitWindowSize(512, 512) glut.glutCreateWindow("Dynamic graph") glut.glutDisplayFunc(on_display) glut.glutReshapeFunc(on_reshape) glut.glutKeyboardFunc(on_keyboard) glut.glutMouseFunc(on_mouse) glut.glutMotionFunc(on_motion) nodes,links = graph( ) circles = CircleCollection() lines = LineCollection() for node in nodes: position = node['position'] circles.append(center = position, radius=5, linewidth=2, fg_color=(1,1,1,1), bg_color=(1,.5,.5,1)) src = nodes[links['source']]['position'] tgt = nodes[links['target']]['position'] V = np.array(zip(src,tgt)).reshape(2*len(src),2) lines.append(V, linewidth=1.5, color=(0.75,0.75,0.75,1.00)) drag,index = False, -1 fps = 60 glut.glutTimerFunc(1000/fps, on_timer, fps)