--Star Ship --Kunio Miyazaki --Master Student of Hosei University, 2004 StarShip( x[3], a[1] ) { array nosecenter[3], xt1[3], nosecuttingblockvertex1[3], nosecuttingblockvertex2[3]; array enginecenter[3], xt2[3], enginecuttingblockvertex1[3], enginecuttingblockvertex2[3]; array bodycuttingblockvertex[3]; array xt3[3], xt4[3], mainwing1vertex[3], mainwing2vertex[3]; array xt5[3], xt6[3], backwing1vertex[3], backwing2vertex[3]; array xt7[3], verticalwingvertex[3]; array missilecenter[3], missilecuttingblockvertex[3]; -----------------Nose---------------- xt1[1] = x[1]; xt1[2] = x[2]; xt1[3] = x[3]; nosetaper1 = hfTaperX( xt1, 0, 3.5, 0.7, 1 ); nosetaper2 = hfTaperX( xt1, 4.5, 10, 1, 0.1 ); nosecenter = [ 0, 0, 0 ]; nosetmp1 = hfEllCylX( xt1, nosecenter, 0.5, 1 ); nosecenter[2] = 0.3; nosetmp2 = hfEllCylX( xt1, nosecenter, 0.5, 0.5 ); nosetmp3 = hfBlendUni( nosetmp1, nosetmp2, 0.1, 0.1, 0.1 ); nosecuttingblockvertex1 = [ -18.5, -10, -10 ]; nosecuttingblock1 = hfBlock( xt1, nosecuttingblockvertex1, 20, 20, 20 ); nose = nosetmp3 \ nosecuttingblock1; ------------------------------------ -----------------Engine--------------- xt2[1] = x[1]; xt2[2] = x[2]; xt2[3] = x[3]; enginetaper1 = hfTaperX( xt2, -7, -6.5, 1.5, 1.4 ); enginetaper2 = hfTaperX( xt2, -6.5, -6.2, 1.4, 1.0 ); enginetaper3 = hfTaperX( xt2, -6.2, 0, 1.0, 0.5 ); enginecenter = [ 0, 0, 0 ]; enginetmp1 = hfEllCylX( xt2, enginecenter, 0.8, 1 ); enginecuttingblockvertex1 = [ -27, -10, -10 ]; enginecuttingblock1 = hfBlock( xt2, enginecuttingblockvertex1, 20, 20, 20 ); enginecuttingblockvertex2 = [ 2, -10, -10 ]; enginecuttingblock2 = hfBlock( xt2, enginecuttingblockvertex2, 20, 20, 20 ); enginetmp2 = enginetmp1 \ enginecuttingblock1 \ enginecuttingblock2; enginecenter[2] = 0.7; enginetmp3 = hfEllCylX( xt2, enginecenter, 0.5, 0.5 ); enginecuttingblockvertex2 = [ -2, -10, -10 ]; enginecuttingblock2 = hfBlock( xt2, enginecuttingblockvertex2, 20, 20, 20 ); enginetmp4 = enginetmp3 \ enginecuttingblock1 \ enginecuttingblock2; engine = hfBlendUni( enginetmp2, enginetmp4, 1, 1, 1 ); ------------------------------------ -----------------Body---------------- bodytmp = hfBlendUni( engine, nose, 0.05, 0.05, 0.05 ); bodycuttingblockvertex = [ -10, -20.5, -10 ]; bodycuttingblock = hfBlock( x, bodycuttingblockvertex, 20, 20, 20 ); body = bodytmp \ bodycuttingblock; ------------------------------------ ---------------MainWing1--------------- xt3[1] = x[1]; xt3[2] = x[2]; xt3[3] = x[3]; mainwing1rotate = hfRotate3DY( xt3, -0.4 ); mainwing1rotate = hfRotate3DX( xt3, 0.3 ); mainwing1rotate = hfRotate3DZ( xt3, -0.3 ); mainwing1taper = hfTaperZ( xt3, 0, 7, 1, 0.5 ); mainwing1vertex = [ -3, 0, 0 ]; mainwing1 = hfBlock( xt3, mainwing1vertex, 3.5, 0.1, 7 ); ------------------------------------ ---------------MainWing2--------------- xt4[1] = x[1]; xt4[2] = x[2]; xt4[3] = x[3]; mainwing2rotate = hfRotate3DY( xt4, 0.4 ); mainwing2rotate = hfRotate3DX( xt4, -0.3 ); mainwing2rotate = hfRotate3DZ( xt4, -0.3 ); mainwing2taper = hfTaperZ( xt4, -7, 0, 0.5, 1 ); mainwing2vertex = [ -3, 0, -7 ]; mainwing2 = hfBlock( xt4, mainwing2vertex, 3.5, 0.1, 7 ); ------------------------------------ ---------------BackWing1--------------- xt5[1] = x[1]; xt5[2] = x[2]; xt5[3] = x[3]; backwing1rotate = hfRotate3DY( xt5, -0.8 ); --backwing1rotate = hfRotate3DX( xt5, 0.3 ); --backwing1rotate = hfRotate3DZ( xt5, -0.3 ); backwing1taper = hfTaperZ( xt5, 2.7, 6.7, 1, 0.5 ); backwing1vertex = [ -4.5, 0, 2.7 ]; backwing1 = hfBlock( xt5, backwing1vertex, 3.5, 0.1, 4 ); ------------------------------------ ---------------BackWing2--------------- xt6[1] = x[1]; xt6[2] = x[2]; xt6[3] = x[3]; backwing2rotate = hfRotate3DY( xt6, 0.8 ); backwing2taper = hfTaperZ( xt6, -6.7, -2.7, 0.5, 1 ); backwing2vertex = [ -4.5, 0, -6.7 ]; backwing2 = hfBlock( xt6, backwing2vertex, 3.5, 0.1, 4 ); ------------------------------------ ---------------VerticalWing-------------- xt7[1] = x[1]; xt7[2] = x[2]; xt7[3] = x[3]; verticalwingrotate = hfRotate3DZ( xt7, 0.7 ); verticalwingtaper = hfTaperY( xt7, 4, 8, 1, 0.5 ); verticalwingvertex = [ -4.0, 2.0, 0 ]; verticalwing = hfBlock( xt7, verticalwingvertex, 3.5, 4, 0.1 ); ------------------------------------ ---------------Missile----------------- missilecenter = [ 0, -1, 0 ]; missilecylinder1 = hfCylinderX( x, missilecenter, 0.3 ); missilecenter = [ 0, -1.5, 0.5 ]; missilecylinder2 = hfCylinderX( x, missilecenter, 0.3 ); missilecenter = [ 0, -1.5, -0.5 ]; missilecylinder3 = hfCylinderX( x, missilecenter, 0.3 ); missilecuttingblockvertex = [ -25, -10, -10 ]; missilecuttingblock1 = hfBlock( x, missilecuttingblockvertex, 20, 20, 20 ); missilecuttingblockvertex = [ 2, -10, -10 ]; missilecuttingblock2 = hfBlock( x, missilecuttingblockvertex, 20, 20, 20 ); missile = missilecylinder1 | missilecylinder2 | missilecylinder3 \ missilecuttingblock1 \ missilecuttingblock2; ------------------------------------ StarShip = body | mainwing1 | mainwing2 | backwing1 | backwing2 | verticalwing | missile; }