#------------------------------------ # U.S.S. ENTERPRISE # by: Noah Klein # Alex Krits #------------------------------------ eng1=circle(vector(0,0,.5),0); eng2=circle(vector(0,0,.4),0.2); eng3=circle(vector(0,0,.3),0.4); eng4=circle(vector(0,0,0),0.5); Engine = sfromcrvs(list(eng1,eng2,eng3,eng4),4); attrib(Engine,"rgb","70,70,255"); fus0=circle(vector(0,0,.1),0.445); fus1=circle(vector(0,0,-0.1),0.45); fus2=circle(vector(0,0,-0.05),0.55); fus3=circle(vector(0,0,0),0.6); fus4=circle(vector(0,0,0.45),0.825); fus5=circle(vector(0,-0.0125,0.5),0.86); fus6=circle(vector(0,-0.025,0.75),0.875); fus7=circle(vector(0,-0.05,1),0.925); fus8=circle(vector(0,-0.075,2.75),0.95); fus9=circle(vector(0,-0.1,4),0.975); fus10=circle(vector(0,0.1,5),0.7); fus11=circle(vector(0,0.15,6),0.6); fus12=circle(vector(0,0.2,7),0.5); fus13=circle(vector(0,0,7),0); Fuselage = sfromcrvs(list(fus0,fus1,fus2,fus3,fus4,fus5,fus6,fus7,fus8,fus9,fus10,fus11,fus12,fus13),4); Fuselage=-Fuselage; Fusealge=Fuselage*scale(vector(1,1,1.5)); color(Fuselage,WHITE); elev0 = cbspline(4, list( ctlpt(E3,-0.190669, -0.156187, 1.000000), ctlpt(E3,-0.288032, 0.022312, 1.000000), ctlpt(E3,-0.296146, 0.350913, 1.000000), ctlpt(E3,-0.239351, 0.505071, 1.000000), ctlpt(E3,-0.154158, 0.505071, 1.000000), ctlpt(E3,-0.105477, 0.359026, 1.000000), ctlpt(E3,-0.097363, 0.030426, 1.000000), ctlpt(E3,-0.190669, -0.156187, 1.000000)), list(0,0,0,0,4,5,6,7,11,11,11,11)); elev0 = elev0*rotx(-90)*scale(vector(2,1.9,2.1))*trans(vector(.38,-1.15,1.8)); elev1 = elev0*trans(vector(0,1.5,-1.5))*scale(vector(1,1,1.4)); Elevator=sfromcrvs(list(elev0,elev1),4); Elevator=Elevator*scale(vector(1.4,1,1)); color(Elevator,WHITE); sau_5=circle(vector(0,0,-0.5),0); sau_4=circle(vector(0,0,-0.5),0.1); sau_2=circle(vector(0,0,-0.49),0.2.5); sau_3=circle(vector(0,0,-0.465),0.6); sau_1=circle(vector(0,0,-0.45),0.675); sau0=circle(vector(0,0,-0.45),0.75); sau1=circle(vector(0,0,-0.3),0.875); sau2=circle(vector(0,0,-0.25),0.9); sau3=circle(vector(0,0,-0.2),1); sau4=circle(vector(0,0,-0.1),1.5); sau5=circle(vector(0,0,0),3.25); sau6=circle(vector(0,0,0),3.25); sau7=circle(vector(0,0,0.4),3); sau8=circle(vector(0,0,0.4),3); sau9=circle(vector(0,0,0.5),1.5); sau10=circle(vector(0,0,0.6),1); sau11=circle(vector(0,0,0.7),0.6); sau12=circle(vector(0,0,0.8),0.6); sau13=circle(vector(0,0,0.85),0.3); sau14=circle(vector(0,0,0.875),0.1); sau15=circle(vector(0,0,9),0); Saucer=sfromcrvs(list(sau_5,sau_4,sau_3,sau_2,sau_1,sau0,sau1,sau2,sau3,sau4, sau5,sau6,sau7,sau8,sau9,sau10, sau11,sau12,sau13,sau14),4); Saucer=Saucer*rotx(90)*trans(vector(0,2.2,-2.2))*scale(vector(1.2,1.2,1.2)); Saucer=-Saucer; color(Saucer,WHITE); Torpedo=sphere(vector(0,1.7,-2.65),0.25); Torpedo=-Torpedo; attrib(Torpedo,"rgb","217,238,137"); prop1 = cbspline(4, list( ctlpt(E3,-0.117647, -0.375254, 1.000000), ctlpt(E3,-0.259635, -0.342799, 1.000000), ctlpt(E3,-0.259635, -0.131846, 1.000000), ctlpt(E3,-0.247465, 0.079108, 1.000000), ctlpt(E3,-0.186613, 0.237323, 1.000000), ctlpt(E3,-0.052738, 0.237323, 1.000000), ctlpt(E3,0.004057, 0.066937, 1.000000), ctlpt(E3,0.004057, -0.139959, 1.000000), ctlpt(E3,0.000000, -0.359026, 1.000000), ctlpt(E3,-0.117647, -0.375254, 1.000000)), list(0.000000,0.000000,0.000000,0.000000,4.000000,5.000000,6.000000,7.000000, 8.000000,9.000000,13.000000,13.000000,13.000000,13.000000)); ellipse=circle(vector(0,0,0),0.14)*scale(vector(1,2.1,1)); ellipse=ellipse*rotx(90)*rotz(45)*trans(vector(-0.6,0.6,4.3)); Left_Shaft=extrude(ellipse,vector(-1.9,1.9,0)); Left_shaft=Left_Shaft*rotz(-5); color(Left_Shaft,WHITE); Right_Shaft=Left_Shaft*rotz(-80); Anti_Matter=sphere(vector(0,0,0),.5); attrib(Anti_Matter,"rgb","155,0,0"); mat1=circle(vector(0,0,0),.5); Matter=extrude(mat1,vector(0,0,5.5)); Matter=-Matter; color(Matter,WHITE); Tailpipe=Engine*trans(vector(0,0,5.5)); attrib(Tailpipe,"rgb","230,249,218"); Left_Propulsion=List(Matter,Anti_Matter,Tailpipe); Left_Propulsion=Left_Propulsion*trans(vector(-2.6,3.1,3)); Right_Propulsion=Left_Propulsion*rotz(-80); Enterprise=list(Engine,Fuselage,Elevator,Saucer,Torpedo, Left_shaft,Right_shaft,Left_Propulsion,Right_Propulsion); interact(Enterprise); save("StarTrek",Enterprise);