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)
Пример #2
0
# 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))
Пример #3
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)
Пример #4
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)
Пример #5
0
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)