iritState("EchoSource", false); #####--------------------------------------------------------------- ##### The Body #####--------------------------------------------------------------- quadLine1 = CBSPLINE( 3, list( ctlpt( E3, -5.8, 0.0, 0.0 ), ctlpt( E3, -5.7, -1.5, 0.0 ), ctlpt( E3, -5.0, -2.5, 0.0 ), ctlpt( E3, -4.0, -3.0, 0.0 ), ctlpt( E3, -4.0, -3.0, 0.0 ), ctlpt( E3, -3.2, -4.2, 0.0 ), ctlpt( E3, -1.7, -4.0, 0.0 ), ctlpt( E3, -1.7, -4.0, 0.0 ), ctlpt( E3, -1.0, -4.6, 0.0 ), ctlpt( E3, 0.0, -4.6, 0.0 )) , list( 0,0,0,1,2,3,4,5,6,7,8,8,8 ) ); halfLine1 = quadLine1+ -quadLine1*scale(vector(-1,1,1)); halfLine2 = -halfLine1*scale(vector(1,-1,1)); bdln0 = halfLine1+halfLine2; generalPlane= list( BOOLONE(bdln0), SFROMCRVS(list(bdln0, bdln0*scale(vector(0.98,0.98,0.98)) ),3)); #####---- Body.. bodySrfOut = EXTRUDE(bdln0,vector(0,0,5.9)); bodySrfIn= SFROMCRVS(list(bdln0*scale(vector(0.8,0.8,1))*trans(vector(0,0,6.3)) ,bdln0*scale(vector(0.8,0.8,1))*trans(vector(0,0,5.8)) ,bdln0*scale(vector(0.9,0.9,1))*trans(vector(0,0,5)) ,bdln0*scale(vector(0.9,0.9,1))*trans(vector(0,0,0)) ),3); bodySrf=list(bodySrfOut,bodySrfIn); #####---- Carcov carcovOut = EXTRUDE(bdln0*scale(vector(0.9,0.9,0.9))*trans(vector(0,0,.1)),vector(0,0,.4)); carcovCorner= SFROMCRVS( list(bdln0*scale(vector(0.9,0.9,0.9))*trans(vector(0,0,0.1)), bdln0*scale(vector(0.9,0.9,0.9)), bdln0*scale(vector(0.85,0.85,0.85)) ),3); carcovIn = EXTRUDE(bdln0*scale(vector(0.8,0.8,0.8)),vector(0,0,.2)); carcovPlane= SFROMCRVS(list(bdln0*scale(vector(0.85,0.85,0.85)), bdln0*scale(vector(0.8,0.8,0.8))),3); carcov=list(carcovOut,carcovCorner,carcovIn,carcovPlane); attrib ( carcov, "rgb", "0,255,255"); bodyCarcov= carcov*scale(vector(1,1,-1))*trans(vector(0.0,0.0,6.5)); ####-----base baseScale=scale(vector(1.14,1.14,1.14)); baseLine1= bdln0*baseScale*trans(vector(0.0,0.0,-0.3)); baseLine2= bdln0*baseScale*trans(vector(0.0,0.0,-0.7)); basePlaneUp =generalPlane; basePlaneDown=generalPlane*baseScale*trans(vector(0,0,-0.7)); baseBody= SFROMCRVS(list(bdln0,baseLine1,baseLine2),4); base = list(basePlaneUp,basePlaneDown,baseBody); BodyStep= SFROMCRVS(list(bdln0*scale(vector(0.85,0.85,0.85))*trans(vector(0.0,0.0,6.0)), bdln0*scale(vector(0.9,0.9,0.9))*trans(vector(0.0,0.0,6.0))),3); bodyCorner = SFROMCRVS( list(bdln0*trans(vector(0,0,5.9)), bdln0*trans(vector(0,0,6.0)), bdln0*scale(vector(0.9,0.9,0.9))*trans(vector(0.0,0.0,6.0))) ,3); ###------------------------------------------- KishutSec = cbspline( 4, list( ctlpt( E3, 0, 0, 0.15 ), ctlpt( E3, 0.1, 0, 0.15 ), ctlpt( E3, 0.15, 0, 0.1 ), ctlpt( E3, 0.15, 0, 0.04 ), ctlpt( E3, 0.1, 0, 0.02 ), ctlpt( E3, 0.1, 0, 0 ) ), list( KV_OPEN )); KishutElem= surfrev( KishutSec )*scale(vector(2,2,2))*rotx(90); Kishut1 = KishutElem*trans(vector(0,-4.4,4)); Kishut2 = KishutElem*rotz(30)*trans(vector(3.0,-3.9,2.5)); Kishut3 = KishutElem*rotz(-30)*trans(vector(-3.0,-3.9,2.5)); Kishut=list(Kishut1,Kishut2,Kishut3); attrib ( Kishut, "rgb", "0,255,255"); body =list(bodySrf,bodyCorner,bodyCarcov,base,BodyStep,Kishut); #####--------------------------------------------------------------- ##### The Cup #####--------------------------------------------------------------- KisSec = cbspline( 4, list( ctlpt( E3, 0, 0, 0.09 ), ctlpt( E3, 0.1, 0, 0.09 ), ctlpt( E3, 0.15, 0, 0.08 ), ctlpt( E3, 0.15, 0, 0.02 ), ctlpt( E3, 0.1, 0, 0.02 ), ctlpt( E3, 0.1, 0, 0 ) ), list( KV_OPEN )); Soger = surfrev( KisSec )*scale(vector(5,3.4,3.4))*rotx(90)*trans(vector(0,-4.1,0.1)); cupCarcov = list( Soger,carcov) * trans(vector(0,0,-1.3)); attrib ( cupCarcov, "rgb", "0,255,255"); cupStepScale=scale(vector(0.99,0.99,0.99)); cupStepScale2=scale(vector(0.98,0.98,0.98)); cupStepTrans=trans(vector(0.05,0.05,0.05)); cupPlaneUp=list(SFROMCRVS(list(bdln0 ,bdln0*cupStepScale ,bdln0*cupStepScale*cupStepTrans ,bdln0*cupStepScale2*cupStepTrans) ,4), generalPlane*cupStepScale2*cupStepTrans); Style = surfrev( KisSec )*scale(vector(7,4,4))*rotz(20)*trans(vector(0,-3.5,-0.1)); attrib ( Style, "rgb", "0,255,255"); cupBody = list(Style,cupPlaneUp,baseBody); cupInScale=scale(vector(0.97,0.97,0.97)); cupPlaneIn=generalPlane*cupInScale*trans(vector(0,0,-0.3)); cupInside = SFROMCRVS( list(bdln0*cupInScale*trans(vector(0,0,-0.3)) ,bdln0*scale(vector(0.8,0.8,0.8))*trans(vector(0,0,-0.7)) ,bdln0*scale(vector(0.8,0.8,0.8))*trans(vector(0,0,-0.9)) ),3); cupDownPlane= SFROMCRVS(list(bdln0*baseScale,bdln0*scale(vector(0.9,0.9,0.9)) ),3)*trans(vector(0,0,-0.7)); cupIn= list(cupInside,cupDownPlane,cupPlaneIn); cylYcenter=coord(ceval(quadLine1*scale(vector(0.9,0.9,0.9)),8),2); cupCylin=CYLIN(vector(-1.0,-cylYcenter-0.25,-1.3),vector(2.0,0,0),0.25); attrib ( cupCylin, "rgb", "0,255,255"); cupWhole= list(cupCylin,cupIn,cupBody,cupCarcov); cup=cupWhole*trans(vector(0,-4.14,1.3))*rotx(-30)*trans(vector(0,4.14,-1.3))*trans(vector(0,0,7.7)); #####--------------------------------------------------------------- ##### The Les #####--------------------------------------------------------------- legFrontUp = CREGION(quadLine1,3,6)*scale(vector(1.14,1.14,1.14))*trans(vector(0.0,0.0,-0.7)); legBackUp = legFrontUp*scale(vector(0.8,0.8,0.8)); legFrontDown = CREGION(quadLine1,3.5,5.5)*scale(vector(1.14,1.14,1.14))*trans(vector(0.0,0.0,-1.2)); legBackDown = legFrontDown*scale(vector(0.9,0.9,0.9)); LegFront =SFROMCRVS(list(legFrontDown,legFrontUp),3); LegBack =SFROMCRVS(list(legBackDown,legBackUp),3); LegDown =SFROMCRVS(list(legFrontDown,legBackDown),3); c1=cbezier(list(ceval(legBackDown,coord( pdomain( legBackDown ), 1 )), ceval(legFrontDown,coord( pdomain(legFrontDown), 1 ))) ): c2=cbezier(list(ceval(legBackUp,coord( pdomain( legBackUp ), 1 )), ceval(legFrontUp,coord( pdomain(legFrontUp), 1 ))) ): LegLeft =SFROMCRVS(list(c1,c2),2); c1=cbezier(list(ceval(legBackDown,coord( pdomain( legBackDown ), 2 )), ceval(legFrontDown,coord( pdomain(legFrontDown), 2 ))) ): c2=cbezier(list(ceval(legBackUp,coord( pdomain( legBackUp ), 2 )), ceval(legFrontUp,coord( pdomain(legFrontUp), 2 ))) ): LegRight =SFROMCRVS(list(c1,c2),2); leg1 = list(LegFront,LegBack,LegDown,LegLeft,LegRight); leg2 = leg1*scale(vector(1,-1,1)); leg3 = leg1*scale(vector(-1,1,1)); leg4 = leg1*scale(vector(-1,-1,1)); legs = list(leg1,leg2,leg3,leg4); #####--------------------------------------------------------------- ##### The View Matrix #####--------------------------------------------------------------- view_mat=rotx(-66)*roty(0)*trans(vector(0,-5,0))*scale(vector(0.09,0.09,0.09)); #####--------------------------------------------------------------- ##### The Whole Model #####--------------------------------------------------------------- #body,legs,carcov, cylinder, top. orienament model=list(body,legs,cup); view(list(view_mat,model),TRUE); save ("JewelBox.dat", model);