// Stefano Calcaterra, 405769 // Final Project - Lampada Alfa //porzione di arco pieno function arc (alpha, r, R) { var domain = DOMAIN([[0,alpha],[r,R]])([36,1]); var mapping = function (v) { var a = v[0]; var r = v[1]; return [r*COS(a), r*SIN(a)]; } var model = MAP(mapping)(domain); return model; } //sfera function sfera (alpha, r, R) { var domain = DOMAIN([[0,alpha],[r,R],[0,alpha]])([36,1,36]); var mapping = function (v) { var a = v[0]; var r = v[1]; var a2 = v[2]; return [r*SIN(a2)*COS(a), r*SIN(a2)*SIN(a), r*COS(a2)]; } var model = MAP(mapping)(domain); return model; } var dom1 = PROD1x1([INTERVALS(1)(36),INTERVALS(1)(36)]); //////////////////////////////////////////////////////////// base //////////////////////////////////////////////////////////// var alpha_base = BEZIER(S0)([[0.55,0,0.4],[0.7,0,0.15]]); var alpha2_base = BEZIER(S0)([[0.7,0,0.15],[0.7,0,0]]); var alpha3_base = BEZIER(S0)([[0,0,0.4],[0.55,0,0.4]]); var alpha4_base = BEZIER(S0)([[0,0,0],[0.7,0,0]]); var beta_base = BEZIER(S1)([[0.7,0,0],[0.7,0.95,0],[-0.7,0.95,0],[-0.7,0,0]]); var surface1_base = MAP(PROFILEPROD_SURFACE([alpha_base, beta_base]))(dom1); var surface1_base_scaled = SCALE([0,1])([1.4,1.4])(surface1_base); var surface2_base = MAP(PROFILEPROD_SURFACE([alpha2_base, beta_base]))(dom1); var surface2_base_scaled = SCALE([0,1])([1.4,1.4])(surface2_base); var surface3_base = MAP(PROFILEPROD_SURFACE([alpha3_base, beta_base]))(dom1); var surface3_base_scaled = SCALE([0,1])([1.4,1.4])(surface3_base); var surface4_base = MAP(PROFILEPROD_SURFACE([alpha4_base, beta_base]))(dom1); var surface4_base_scaled = SCALE([0,1])([1.4,1.4])(surface4_base); var base1 = STRUCT(REPLICA(2)([surface1_base_scaled,R([0,1])(PI)])); var base2 = STRUCT(REPLICA(2)([surface2_base_scaled,R([0,1])(PI)])); var base3 = STRUCT(REPLICA(2)([surface3_base_scaled,R([0,1])(PI)])); var base4 = STRUCT(REPLICA(2)([surface4_base_scaled,R([0,1])(PI)])); //DRAW(STRUCT([MAP(alpha_base)(dom1),MAP(beta_base)(dom1), base1, base2, base3, base4])); var base = STRUCT([base1, base2, base3, base4]); //////////////////////////////////////////////////////////// corpo //////////////////////////////////////////////////////////// var corpo1 = EXTRUDE([0.45])(arc(2*PI, 0, 0.175)); var corpo2 = EXTRUDE([0.7])(arc(2*PI, 0, 0.1)); var corpo3 = EXTRUDE([0.5])(arc(2*PI, 0, 0.175)); var corpo3 = T([2])([2.8])(corpo3); var corpo4 = EXTRUDE([5])(arc(2*PI, 0, 0.075)); var corpo5 = EXTRUDE([0.1])(arc(2*PI, 0, 0.95)); var corpo5 = T([2])([3])(corpo5); var corpo6 = EXTRUDE([0.1])(arc(2*PI, 0, 1)); var corpo6 = T([2])([3.1])(corpo6); var sfera = sfera(2*PI, 0, 0.3); var sfera = T([2])([4.75])(sfera); var corpo = STRUCT([corpo1, corpo2, corpo3, corpo4, corpo5, corpo6, sfera]); //////////////////////////////////////////////////////////// paralume //////////////////////////////////////////////////////////// var alpha_paralume = BEZIER(S0)([[0.9,0,3],[1.7,0,2.4],[1.6,0,1.7]]); var beta_paralume = BEZIER(S1)([[1.6,0,1.7],[1.6,2.2,1.7],[-1.6,2.2,1.7],[-1.6,0,1.7]]); var surface1_paralume = MAP(PROFILEPROD_SURFACE([alpha_paralume, beta_paralume]))(dom1); var surface1_paralume_scaled = SCALE([0,1])([0.63,0.63])(surface1_paralume); var paralume = STRUCT(REPLICA(2)([surface1_paralume_scaled,R([0,1])(PI)])); //DRAW(STRUCT([MAP(alpha_paralume)(dom1),COLOR([1,0,0])(MAP(beta_paralume)(dom1)), paralume1])); //////////////////////////////////////////////////////////// TOTALE //////////////////////////////////////////////////////////// DRAW(STRUCT([COLOR([0.2,0.2,0.2])(base), COLOR([0.6,0.6,0.6])(corpo), COLOR([2,1.9,1.8])(paralume)]));