# Face # Joel Kahn, 2004 # Treat this as if it were under the GNU General Public License, # although I'm not actually doing the GPL procedures for a program this small. from visual import * from time import * scene = display() scene.width = 1024 scene.height = 738 scene.x = 0 scene.y = 0 scene.center = (0.0, -0.3, 0.0) left_brow = frame () right_brow = frame () mouth_frame = frame () eye_length = 0.8 eye_width = 0.4 eye_height = 0.5 left_eye = ellipsoid (pos = (-1.0, 0.9, 0.0), length = eye_length, width = eye_width, height = eye_height, color = color.blue) right_eye = ellipsoid (pos = (1.0, 0.9, 0.0), length = eye_length, width = eye_width, height = eye_height, color = color.blue) left_eyebrow = curve (frame = left_brow, radius = 0.09, color = (0.91, 0.7, 0.15)) right_eyebrow = curve (frame = right_brow, radius = 0.09, color = (0.91, 0.7, 0.15)) nose = pyramid (pos = (0.0, 0.0, 0.0), axis = (0.0, 0.0, 1.0), width = 0.8, height = 0.8, length = 1.7) mouth = curve (frame = mouth_frame, radius = 0.2, color = color.red) eyebrow_x1 = 1.4 eyebrow_x2 = 1.1 eyebrow_x3 = 1.0 eyebrow_x4 = 0.9 eyebrow_x5 = 0.6 eyebrow_y1 = 1.25 eyebrow_y2 = 1.39 eyebrow_y3 = 1.41 eyebrow_y4 = 1.39 eyebrow_y5 = 1.25 left_eyebrow.append (pos = (-eyebrow_x1, eyebrow_y1, 0.0)) left_eyebrow.append (pos = (-eyebrow_x2, eyebrow_y2, 0.0)) left_eyebrow.append (pos = (-eyebrow_x3, eyebrow_y3, 0.0)) left_eyebrow.append (pos = (-eyebrow_x4, eyebrow_y4, 0.0)) left_eyebrow.append (pos = (-eyebrow_x5, eyebrow_y5, 0.0)) right_eyebrow.append (pos = (eyebrow_x1, eyebrow_y1, 0.0)) right_eyebrow.append (pos = (eyebrow_x2, eyebrow_y2, 0.0)) right_eyebrow.append (pos = (eyebrow_x3, eyebrow_y3, 0.0)) right_eyebrow.append (pos = (eyebrow_x4, eyebrow_y4, 0.0)) right_eyebrow.append (pos = (eyebrow_x5, eyebrow_y5, 0.0)) mouth.append (pos = (-1.5, -0.5, 0.0)) mouth.append (pos = (-0.5, -1.3, 0.0)) mouth.append (pos = (0.0, -1.4, 0.0)) mouth.append (pos = (0.5, -1.3, 0.0)) mouth.append (pos = (1.5, -0.5, 0.0)) ang = 0.00005 red_component = 0.001 green_component = 0.0 switcher = 1.0 while time() > 1.0: mouth_frame.rotate (angle = ang, axis = (-1.0, 0.0, 0.0), origin = (0.0, -1.19, 0.0)) left_brow.rotate (angle = ang, axis = (-1.0, 0.0, 0.0), origin = (0.0, 1.36, 0.0)) right_brow.rotate (angle = ang, axis = (-1.0, 0.0, 0.0), origin = (0.0, 1.36, 0.0)) nose.rotate (angle = ang, axis = (ang, ang, 1.0)) if red_component > 0.999: switcher = -1.0 if red_component < 0.001: switcher = 1.0 red_component = red_component + switcher * ang green_component = green_component + 1.0 / time() if green_component > red_component: green_component = 0.0 blue_component = 1.0 - red_component nose.color = (red_component, green_component, blue_component)