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