####################################################################### ## Amy Gooch ## Summer Alpha1 Project ## Started 6/21/95 ## ## ## ## WHAT: ## A Greek Column ## The plan: ## to build a column with a cornice on top. ## ... eventually maybe a room made of columns... ######################################################################## ##The Column (built out of gathering 2 points from inside circle ## and then 2points from outside circle.. etc.) { { { rin = .8; rout = 1.1; cctr = pt (0,0); circIn = circleCtrRad( cctr, rin ); circOut = circleCtrRad( cctr, rout); ColumnProfile = OutlineCrv({ pt(rin*cosd(5), rin*sind(5)), pt(rin*cosd(10), rin*sind(10)), pt(rout*cosd(15),rout*sind(15)), pt(rout*cosd(20), rout*sind(20)), pt(rin*cosd(25), rin*sind(25)), pt(rin*cosd(30), rin*sind(30)), pt(rout*cosd(35),rout*sind(35)), pt(rout*cosd(40), rout*sind(40)), pt(rin*cosd(45), rin*sind(45)), pt(rin*cosd(50), rin*sind(50)), pt(rout*cosd(55),rout*sind(55)), pt(rout*cosd(60), rout*sind(60)), pt(rin*cosd(65), rin*sind(65)), pt(rin*cosd(70), rin*sind(70)), pt(rout*cosd(75),rout*sind(75)), pt(rout*cosd(80), rout*sind(80)), pt(rin*cosd(85), rin*sind(85)), pt(rin*cosd(90), rin*sind(90)), pt(rout*cosd(95),rout*sind(95)), pt(rout*cosd(100), rout*sind(100)), pt(rin*cosd(105), rin*sind(105)), pt(rin*cosd(110), rin*sind(110)), pt(rout*cosd(115),rout*sind(115)), pt(rout*cosd(120), rout*sind(120)), pt(rin*cosd(125), rin*sind(125)), pt(rin*cosd(130), rin*sind(130)), pt(rout*cosd(135),rout*sind(135)), pt(rout*cosd(140), rout*sind(140)), pt(rin*cosd(145), rin*sind(145)), pt(rin*cosd(150), rin*sind(150)), pt(rout*cosd(155),rout*sind(155)), pt(rout*cosd(160), rout*sind(160)), pt(rin*cosd(165), rin*sind(165)), pt(rin*cosd(170), rin*sind(170)), pt(rout*cosd(175),rout*sind(175)), pt(rout*cosd(180), rout*sind(180)), pt(rin*cosd(185), rin*sind(185)), pt(rin*cosd(190), rin*sind(190)), pt(rout*cosd(195),rout*sind(195)), pt(rout*cosd(200), rout*sind(200)), pt(rin*cosd(205), rin*sind(205)), pt(rin*cosd(210), rin*sind(210)), pt(rout*cosd(215),rout*sind(215)), pt(rout*cosd(220), rout*sind(220)), pt(rin*cosd(225), rin*sind(225)), pt(rin*cosd(230), rin*sind(230)), pt(rout*cosd(235),rout*sind(235)), pt(rout*cosd(240), rout*sind(240)), pt(rin*cosd(245), rin*sind(245)), pt(rin*cosd(250), rin*sind(250)), pt(rout*cosd(255),rout*sind(255)), pt(rout*cosd(260), rout*sind(260)), pt(rin*cosd(265), rin*sind(265)), pt(rin*cosd(270), rin*sind(270)), pt(rout*cosd(275),rout*sind(275)), pt(rout*cosd(280), rout*sind(280)), pt(rin*cosd(285), rin*sind(285)), pt(rin*cosd(290), rin*sind(290)), pt(rout*cosd(295),rout*sind(295)), pt(rout*cosd(300), rout*sind(300)), pt(rin*cosd(305), rin*sind(305)), pt(rin*cosd(310), rin*sind(310)), pt(rout*cosd(315),rout*sind(315)), pt(rout*cosd(320), rout*sind(320)), pt(rin*cosd(325), rin*sind(325)), pt(rin*cosd(330), rin*sind(330)), pt(rout*cosd(335),rout*sind(335)), pt(rout*cosd(340), rout*sind(340)), pt(rin*cosd(345), rin*sind(345)), pt(rin*cosd(350), rin*sind(350)), pt(rout*cosd(355),rout*sind(355)), pt(rout*cosd(360), rout*sind(360)), pt(rin*cosd(5), rin*sind(5))}, false ); Column = extrude(ColumnProfile, pt(0,0), pt(0,0,10), false); setColor( Column, "DarkSlateGrey"); setSq( Column , "SlightlyDull"); setTexture( Column, "marble.rle" ); } #PIECE TO set top on: { tpCrv1 =pt(0.068000, -0.532000); tpCrv2 =pt(-0.016000, -0.068000); tpCrv3 =pt(-0.340000, 0.028000); tpCrv4 =pt(-0.864000, 0.072000); pieceCrv = uniOpCrv(cubic, array(tpCrv1, tpCrv2, tpCrv3, tpCrv4)); pCrv = objTransform(pieceCrv, tx(-1.2)); PAxis = lineThru2Pts( pt(0,0), pt(0,1)); piece = srfOfRevolution(PAxis, pCrv, true); Cornice = objTransform(piece, rx(90), tz(10.53)); } #Bottom { btmCrv1 = pt( 0.140000, -0.292000); btmCrv2 = pt( 0.136000, -0.220000); btmCrv3 = pt( 0.140000, -0.136000); btmCrv4 = pt( 0.360000, -0.136000); btmCrv5 = pt( 0.332000, 0.020000); btmCrv6 = pt( 0.384000, 0.024000); bcrv =objTransform( uniOpCrv(cubic, array(btmCrv1, btmCrv2,btmCrv3, btmCrv4,btmCrv5,btmCrv6)), tx(-1.5)); bottom = objTransform(srfOfRevolution(PAxis, reverseObj(bcrv), true), rx(90)); bottom2 =makeGeom( objTransform(bottom, tz(-.3), sx(1.2), sy(1.2))); setColor( bottom2 , "DarkSlateGrey"); setSq( bottom2 , "SlightlyDull"); setTexture( bottom2, "marble.rle" ); mysqr = profile(pt(-2.2, -2.2, -.4),pt(-2.2, 2.2, -.4),pt(2.2, 2.2, -.4), pt(2.2, -2.2, -.4), pt(-2.2, -2.2, -.4)); mybox = extrude( mysqr, pt(0,0,-.5), pt(0,0,-.3), true ); base = mybox; top = objTransform(mybox, tz(11.41)); } } #################################################################### #### SET UP COLORS: { setColor(base , "DarkSlateGrey"); setSq( base , "SlightlyDull"); setTexture( base , "marble.rle" ); setColor( top, "DarkSlateGrey"); setSq( top , "SlightlyDull"); setTexture( top, "marble.rle" ); setColor( bottom, "DarkSlateGrey"); setSq( bottom , "SlightlyDull"); setTexture( bottom, "marble.rle" ); #setColor( reverseObj(Column), "DarkSlateGrey"); #setSq( reverseObj(Column), "SlightlyDull"); #setTexture( reverseObj(Column), "marble.rle" ); setColor( Cornice, "DarkSlateGrey"); setSq( Cornice, "SlightlyDull"); setTexture( Cornice, "marble.rle" ); } GreekColumn = group(base, top, bottom, bottom2, reverseObj(Column), reverseObj(Cornice)); #### SET UP COLORS: #setColor( GreekColumn, "DarkSlateGrey"); #setSq( GreekColumn, "SlightlyDull"); #setTexture( GreekColumn, "marble.rle" ); ###################################################################### ##Build more columns: { col1 = objTransform(GreekColumn, tx(0), ty(0)); col2 = objTransform(GreekColumn, tx(0), ty(20)); col3 = objTransform(GreekColumn, tx(20), ty(20)); col4 = objTransform(GreekColumn, tx(20), ty(0)); } ###################################################################### ##Build a few BROKEN columns: { cut1 = pt( -0.984000, -0.448000); cut2 = pt( -0.932000, -0.416000); cut3 = pt( -0.716000, -0.300000); cut4 = pt( -0.528000, -0.380000); cut5 = pt( -0.352000, -0.116000); cut6 = pt( -0.112000, -0.228000); cut7 = pt( 0.120000, -0.228000); cut8 = pt( 0.244000, 0.036000); cut9 = pt( 0.500000, 0.080000); cut10 = pt( 0.632000, -0.068000); cut11 = pt( 0.804000, -0.048000); cut12 = pt( 0.980000, 0.248000); cuttingLine = uniOpCrv(3, array(cut1,cut2,cut3,cut4,cut5,cut6,cut7, cut8,cut9,cut10,cut11,cut12)); } { CP1 =extrudeDir( cuttingLine, vec(1,5,4), false); CuttingPlane = objTransform(CP1,txyz(-.5,-2.5,5), sx(1.8)); CuttingPlane2 = objTransform(CuttingPlane,ry(130), txyz(-5.5,0,7), sx(1.5)); Cutaway1 = combineShells( reverseObj(Column), CuttingPlane, "-" ); bkcol6 = group(Cutaway1, base, bottom, bottom2); Cutaway2 = combineShells( Cutaway1, CuttingPlane2, "-"); bkcol5 = objTransform(Cutaway2, rx(130), txyz(0,.5,4)); #top Cutaway3 = combineShells( reverseObj(Column), reverseObj(CuttingPlane), "-" ); topcol7=group(Cutaway3, top, reverseObj(Cornice)); bkcol7 = objTransform(topcol7, ry(65), txyz(-2,0,-3)); BrokeCol = objTransform(group(bkcol5,bkcol6,bkcol7), txyz(12, -8, 0)); ######################### SET UP COLORS & TEXTURES ######################### setColor( BrokeCol, "DarkSlateGrey"); setSq( BrokeCol, "SlightlyDull" ); setTexture( BrokeCol, "marble.rle" ); } ###################################################################### ## Put in a floor Myfloor = box( pt( -206.2,-206.2, -3.15 ), vec( 0,0,-.2), vec( 428.4,0,0), vec( 0,428.4,0 ) ); { setColor( Myfloor, "Tan"); setSq(Myfloor, "SlightlyDull" ); setTexture( Myfloor, "wood_rough.rle" ); } floor1 = box( pt(-6,-15,-1.55), vec(0,0,.5), vec(32,0,0), vec(0,40,0)); floor2 = box( pt(-8.5,-18.5,-2.25), vec(0,0,.7), vec(37,0,0), vec(0,46,0)); floor3 = box( pt(-11,-22,-2.95), vec(0,0,.7), vec(42,0,0), vec(0,52,0)); { setColor(floor1, "Salmon"); setSq(floor1, "Floor" ); setTexture( floor1, "marble.rle" ); setColor(floor2, "Salmon"); setSq(floor2, "Floor" ); setTexture( floor2, "marble.rle" ); setColor(floor3, "Salmon"); setSq(floor3, "Floor" ); setTexture( floor3, "marble.rle" ); } #PUT in the sky SkyBox = box( pt( -206.2,-206.2, -3.15 ), vec( 0,0,-.2), vec( 428.4,0,0), vec( 0,428.4,0 ) ); background = objTransform(SkyBox, rx(90), txyz(0,-100,0)); ######################### SET UP COLORS & TEXTURES ######################### { setColor( background, "SkyBlue"); setSq(background, "Ruby" ); setTexture( background, "clouds.rle" ); } ######################### SET UP LIGHT SOURCE ######################### lightpoint = pt(-30,-19,15); lightpt2 = pt(15,-15,40); Lightpt3 = pt(10,10,40); spot2 = pt(-10,25,15); spotLight2 = lightsource(spot2, .8, 5); light1 = lightSource( lightpoint, 1, 5 ); light2 = lightSource( lightpt2, 1, 1); light3 = lightSource( Lightpt3, .8, 5); finalpict = group(col1, col2, col3, col4, floor1, floor2, floor3, BrokeCol); dumpGeomFile( {spotLight2, light3, col1, col2, col3, col4, background, Myfloor, BrokeCol , floor1, floor2, floor3 }, "/home/ugrad/ashurst/a1/GreekColumn/Greek.a1"); } ##light1,light2, { single_Column = instance(GreekColumn, txyz(0,-160,0)); setColor( single_Column, "Tan"); setSq( single_Column, "SlightlyDull"); setTexture(single_Column, "marble.rle" ); } spotLightPt = pt(10,-170,15); spotLight = lightsource(spotLightPt, .8, 5); dumpGeomFile( { single_Column, spotLight, background}, "/home/ugrad/ashurst/a1/GreekColumn/Single.a1"); ####Commands for xterm (raytracing): SINGLE COLUMN ##> ray ~/single.view.mat.a1 ~/a1/GreekColumn/Single.a1 >! ~/.public_html/images/models/single_column.rle.Z ####Commands for xterm (raytracing): Picture of many columns ##> aset ray.rleformat on ##> ray ~/final.view.mat.a1 ~/a1/GreekColumn/Greek.a1 >! ~/.public_html/images/models/final.rle.Z