npuntos=12 inct=1./npuntos t=0 turno=0 while t<=1: q=Bez(iniciov,finv,inicioh,finh,t) Uaux=U_ponerFBA(iniciov,finv,inicioh,finh,t) Vaux=V_ponerFBA(iniciov,finv,inicioh,finh,t) #Waux=W_ponerFBA(iniciov,finv,inicioh,finh,t) if turno==0: #farola(q,Uaux,Vaux,W,5.75,3.5,1.5,.5,color.green,color.yellow) farola(q,Uaux,Vaux,W,7,4.5,1.5,.60,(.2,.5,.5),color.yellow) turno+=1 elif turno==1: #banco(q,U,V,W,10,5,4,1.75,1,.2,color.white) banco(q,Uaux,Vaux,W,5,2.5,2,0.875,.5,.1,(.7,.8,.5))#4876ff turno+=1 elif turno==2: #(c,u,v,w,lbase,gbase,colbase) #arbol(q,Uaux,Vaux,W,4,.25,color.orange,color.green) palmera(q,Uaux,Vaux,W,1,7,1,4,.25,color.orange,(.7,.5,0),color.green) turno+=1 else: banco(q,Uaux,Vaux,W,5,2.5,2,0.875,.5,.1,(.7,.8,.5)) turno=0 t+=inct #macetero h angg= 2*pi/4. auxu= norm(cos(angg)*U+sin(angg)*V) auxv= cross(auxu,W)
def glorieta(c,u,v,w,r,d,h,h2,nlados,col): r2=r-d listav=[] angini=pi/4 angg=2*pi/nlados/2 i=0 while i<=nlados: p=c+(r+2*d)*vector(cos(angini+angg*i),0,sin(angini+angg*i)) listav+=[p] i=i+1 i=0 while i<=nlados: p=c+r*vector(cos(angini+angg*i),h2/r,sin(angini+angg*i)) listav+=[p] i=i+1 i=0 while i<=nlados: p=c+(r+d)*vector(cos(angini+angg*i),h2/(r+d),sin(angini+angg*i)) listav+=[p] i=i+1 i=0 while i<=nlados: p=c+(r+d)*vector(cos(angini+angg*i),h/(r+d),sin(angini+angg*i)) listav+=[p] i=i+1 i=0 while i<=nlados: p=c+(r-d)*vector(cos(angini+angg*i),h/(r-d),sin(angini+angg*i)) listav+=[p] i=i+1 i=0 while i<=nlados: p=c+r2*vector(cos(angini+angg*i),h/2/r2,sin(angini+angg*i)) listav+=[p] i=i+1 listav+=[c+vector(0,h/2,0)] listac=[] listacol=[] i=0 n=nlados+1 while i<nlados: i1=i i2=i1+1 cara1=[i1,i1+n,i2+n,i2] cara2=[i1+n,i1+n*2,i2+n*2,i2+n] cara3=[i1+n*2,i1+n*3,i2+n*3,i2+n*2] cara4=[i1+n*3,i1+n*4,i2+n*4,i2+n*3] cara5=[i1+n*4,i1+n*5,i2+n*5,i2+n*4] cara6=[i1+n*5,n*6,i2+n*5] listac+=[cara1,cara2,cara3,cara4,cara5,cara6] listacol+=[col,col,col,col,col,col] i+=1 dibujar(listav,listac,pon_vectores_c(listav,listac),col,2,1,0) listavaux=[listav[0],listav[1],listav[2],listav[3],listav[4],listav[5],listav[6],listav[7],listav[8]] listavaux+=[listav[0]-w*h,listav[1]-w*h,listav[2]-w*h,listav[3]-w*h,listav[4]-w*h,listav[5]-w*h,listav[6]-w*h,listav[7]-w*h,listav[8]-w*h] cara0=[0,1,10,9] cara1=[1,2,11,10] cara2=[2,3,12,11] cara3=[3,4,13,12] cara4=[4,5,14,13] cara5=[5,6,15,14] cara6=[6,7,16,15] cara7=[7,8,17,16] listacaux=[cara0,cara1,cara2,cara3,cara4,cara5,cara6,cara7] dibujar(listavaux,listacaux,pon_vectores_c(listavaux,listacaux),col,2,1,0) Uaux=u Vaux=v angg=2*pi/nlados/2 angini=pi/4 + angg/2 listahuecos=[] i=0 while i<nlados: q=c+vector(0,h/2,0) p=c+(r2*.7)*vector(cos(angini+angg*i),h/2/(r2*.7),sin(angini+angg*i)) Vaux=norm(p-q) Uaux=norm(cross(Vaux,w)) if i==0 or i==7 or i==2 or i==5: banco(p,-Uaux,Vaux,w,5,2.5,2,0.875,.5,.1,(.7,.8,.5)) #sphere(pos=p,radius=0.3,color=color.red) i=i+1 return listav