The example ray, shown differently, hits the red sphere, so its pixel would be coloured red.""" import visual as vis MID_GREY = (0.5,0.5,0.5) LIGHT_GREY = (0.7,0.7,0.7) YELLOW = (0.7,0.7,0.1) BLACK = (0,0,0) PIXELS = 5 # num pixels across and down SPACING = 1.0 / PIXELS SPECIAL_PIXEL = (3,1) # Highlight this one # Draw the viewplane grid for t in vis.arange(0, 1.0001, SPACING): vis.curve(pos=[(0, t, 1), (1,t,1)], color = MID_GREY) vis.curve(pos=[(t,0,1), (t,1,1)], color = MID_GREY) # Draw the eyepoint eye = vis.vector(0.5, 0.5, 2) #vis.label(pos=eye,text="Eye", xoffset=-10) vis.sphere(pos=eye, color=BLACK, radius=0.02) # Draw the scene vis.sphere(pos=(0.35,0.6,0.5), radius=0.25, material=vis.materials.wood) vis.sphere(pos=(0.75,0.2,0.6), radius=0.15, color=vis.color.red, material=vis.materials.plastic) vis.box(pos=(0.5,0,0.5),height=0.001, color=vis.color.green)
# David Scherer vp.scene.title = "Drape" RESTLENGTH = 0.02 M = 0.010 * RESTLENGTH G = 9.8 DT = 0.002 K = 3 DAMP = (1-0)**DT NSPHERES = 3 FLOOR = 0 # Create the stringy thing: BAND = vp.curve( x=vp.arange(-1, 1, RESTLENGTH), y=1, radius=0.02 ) BAND.p = BAND.pos * 0 vp.scene.range = 1.5 vp.scene.autoscale = 0 # Let the user position obstacles: SPHERES = [] for i in range(NSPHERES): S = vp.sphere(pos=vp.scene.mouse.getclick().pos, #(i*0.6 - 0.7, 0.5 + i*0.1, 0), radius=0.25, color=(abs(vp.sin(i)), vp.cos(i)**2, (i%10)/10.0))
from random import uniform print(__doc__) # David Scherer vp.scene.range = 3 PI = vp.pi A = vp.convex(color=(0.5, 0, 0)) B = vp.convex(color=(0, 0.5, 0)) C = vp.convex(color=(0, 0, 0.5)) D = vp.convex(color=(0.5, 0, 0.5)) E = vp.convex(color=(0.5, 0.5, 0)) F = vp.convex(color=(0, 0.5, 0.5)) # circle T = vp.arange(0, 2*PI, 0.1) E.pos = vp.transpose((vp.sin(T), vp.cos(T)+2, 0*T)) # triangle T = vp.arange(0, 2*PI, 2*PI/3) F.pos = vp.transpose((vp.sin(T)-2, vp.cos(T)+2, 0*T)) # disk for T in vp.arange(0, 2*PI, 0.1): A.append(pos=(vp.cos(T), 0, vp.sin(T))) A.append(pos=(vp.cos(T), 0.2, vp.sin(T))) # box for i in range(8): P = vp.vector((i/4)%2 - 2.5, (i/2)%2 - 0.5, (i)%2 - 0.5) B.append(pos=P)
from random import uniform print(__doc__) # David Scherer vp.scene.range = 3 PI = vp.pi A = vp.convex(color=(0.5, 0, 0)) B = vp.convex(color=(0, 0.5, 0)) C = vp.convex(color=(0, 0, 0.5)) D = vp.convex(color=(0.5, 0, 0.5)) E = vp.convex(color=(0.5, 0.5, 0)) F = vp.convex(color=(0, 0.5, 0.5)) # circle T = vp.arange(0, 2 * PI, 0.1) E.pos = vp.transpose((vp.sin(T), vp.cos(T) + 2, 0 * T)) # triangle T = vp.arange(0, 2 * PI, 2 * PI / 3) F.pos = vp.transpose((vp.sin(T) - 2, vp.cos(T) + 2, 0 * T)) # disk for T in vp.arange(0, 2 * PI, 0.1): A.append(pos=(vp.cos(T), 0, vp.sin(T))) A.append(pos=(vp.cos(T), 0.2, vp.sin(T))) # box for i in range(8): P = vp.vector((i / 4) % 2 - 2.5, (i / 2) % 2 - 0.5, (i) % 2 - 0.5) B.append(pos=P)
print(__doc__) # David Scherer vp.scene.title = "Drape" RESTLENGTH = 0.02 M = 0.010 * RESTLENGTH G = 9.8 DT = 0.002 K = 3 DAMP = (1 - 0)**DT NSPHERES = 3 FLOOR = 0 # Create the stringy thing: BAND = vp.curve(x=vp.arange(-1, 1, RESTLENGTH), y=1, radius=0.02) BAND.p = BAND.pos * 0 vp.scene.range = 1.5 vp.scene.autoscale = 0 # Let the user position obstacles: SPHERES = [] for i in range(NSPHERES): S = vp.sphere( pos=vp.scene.mouse.getclick().pos, #(i*0.6 - 0.7, 0.5 + i*0.1, 0), radius=0.25, color=(abs(vp.sin(i)), vp.cos(i)**2, (i % 10) / 10.0)) SPHERES.append(S)