-- Yankee, 1999 -- Takashi Mikuriya, University of Aizu, master student my_model(x[3], a[1]) { array HeadCenter[3], REarCenter[3], LEarCenter[3], MouseCenter[3], HairCenter[3], MimipiCenter[3], RGlassCenter[3], LGlassCenter[3], SylForGlassCenter[3], MokuCenter[3], xt[3], x0[3], y0[3], z0[3], p[3], b[3]; xt[1] = x[1]; xt[2] = x[2]; xt[3] = x[3]; -- head HeadCenter = [0, 0, 0]; Head = hfEllipsoid(xt, HeadCenter, 4, 6, 4); -- nose NoseCone = (xt[2] - 1)^2 - (xt[3] - 4)^2 / .5 - (xt[1])^2 / 0.25; Nose = NoseCone & (xt[2] + 1) & (1 - xt[2]); -- ear REarCenter = [4, 0, 0]; REar = hfEllipsoid(xt, REarCenter, 1, 2, .5); LEarCenter = [-4, 0, 0]; LEar = hfEllipsoid(xt, LEarCenter, 1, 2, .5); -- mimipi MimipiCenter = [4.5, -1.5, 0]; Mimipi = hfTorusX(xt, MimipiCenter, 1, .125); -- mouse MouseCenter = [0, -3, 4]; Mouse = hfEllipsoid(xt, MouseCenter, 2, .25, 2); -- hair HairCenter = [0, 0, 0]; Hair = hfEllCylX(xt, HairCenter, 8, 6); HairMohi = ((xt[1] + .125) & (.125 - xt[1]) & (xt[2] - xt[3] - 4)) & Hair; -- glass RGlassCenter = [2, 2, 0]; RGlass = hfCylinderZ(xt, RGlassCenter, 2); LGlassCenter = [-2, 2, 0]; LGlass = hfCylinderZ(xt, LGlassCenter, 2); SylForGlassCenter = [0, 0, 0]; SylForGlass1 = hfEllCylY(xt, SylForGlassCenter, 8, 4); SylForGlass2 = hfEllCylY(xt, SylForGlassCenter, 8.125, 4.125); Glass = (RGlass | LGlass) & ((SylForGlass2 \ SylForGlass1) & (xt[3] - 0) & (2 - xt[2])); -- smoke x0 = [-2, -2.5, -2.5]; y0 = [-2, -1.5, -1]; z0 = [6, 6.5, 6.5]; p = [5, 5, 5]; b = [.5, .5, .5]; Smoke = hfBlobby(xt, x0, y0, z0, p, b, 0.1); -- moku MokuCenter = [0, 0, 0]; tmp = hfShift3D(xt, 0, -3, 2); tmp = hfRotate3DY(xt, -.628); Moku = hfCylinderZ(xt, MokuCenter, .125) & (xt[3] - 0) & (4 - xt[3]); Head_Face = hfBlendUni(Head, Nose ,.25 ,.25 ,1); Face = (Head_Face \ Mouse) | REar | LEar | HairMohi; my_model = Face | Mimipi | Glass | Moku | Smoke; }