Donut-Code


def donut(point, r, m1, m2, m3, m4, remove=False): #Koordinaten, Radius, Materialien
 
    point=[point[0], point[1], point[2]]

    if remove == True:
       m1 = AIR
       m2 = AIR
       m3 = AIR
       m4 = AIR


    #Dicke
    d1 = r*0.1
    d2 = r*0.2
    d3 = r*0.3
    d4 = r*0.125
 
 
 #Gebäck
 
    for a in range(d1):
        shapes.circle(m1,
            world(point[0], point[1]-a, point[2]),
            r,
            Axis.Y,
            ShapeOperation.REPLACE)
     
    for b in range(d2):
        shapes.circle(m1,
            world(point[0], point[1]-d1-b, point[2]),
            r-1,
            Axis.Y,
            ShapeOperation.REPLACE)
     
    #Glassur
    
    for c in range(d3):
        shapes.circle(m2,
            world(point[0], point[1]+d1+c, point[2]),
            r,
            Axis.Y,
            ShapeOperation.REPLACE)
     
    for d in range(d4):
        shapes.circle(m2,
            world(point[0], point[1]+d1+d3+d, point[2]),
            r-1,
            Axis.Y,
            ShapeOperation.REPLACE)
 
 
 #Verzierung
 
    distance_from_side= point[1]+d1+d3+d4+1
 
    l_spark=[]
    for i in range(20):
        a = (Math.random()*(3.14)*2) #Just get a random angle :>
        randz=randint(point[2]+(Math.sin(a)*r),point[2]-(Math.sin(a)*r))
        randx=randint(point[0]+(Math.cos(a)*r),point[0]-(Math.cos(a)*r))
        
        color=[m3, m4] #colors
        #dicke=[distance_from_side+1,distance_from_side] 
        cr=color[randint(0,len(color)-1)]
        #cd=dicke[randint(0,len(dicke)-1)]
        
        cd=distance_from_side
        blocks.place(cr, world(randx, cd, randz))
        l_spark.append([randx,cd, randz]) 
 
 
 #Loch
 
    L = d1+d2+d3+d4+2 
    r_loch=r/3
    
    for f in range(L):
        y_loch=point[1]-d1-d2+f
        shapes.circle(AIR,
            world(point[0], y_loch, point[2]),
            r_loch,
            Axis.Y,
            ShapeOperation.REPLACE)
 
    return l_spark

           

zurück