import openscad as o

o.fragments=150

# ~ Calculation of shrinking ratio of clay when being dried and burned:
    # ~ * original width: 200 mm
    # ~ * resulted width: 160 mm
    # ~ -------------------------
    # ~ ratio: 200 : 160 = 1 : 1.25

scalingFactor = 1.25
####################################################################################################
bwlDia    = 200  # inner diameter of bowl
bwlWall   =   6	 # wall thickness of bowl
bwlHeight =  93  # height of bowl after flat on underside is cut away
####################################################################################################
# create outer bowl
########################
o.sphere(bwlDia+2*bwlWall);
sphere=o.result()
## create box to cut sphere in half
o.box(bwlDia*2,bwlDia*2,bwlDia*2)
o.translate(-bwlDia,-bwlDia,0)
box=o.result()
o.difference([sphere, box])
halfSphere=o.result()
# cut away flat on underside
flatDifference = (bwlDia/2+bwlWall)-bwlHeight
o.box(bwlDia*2,bwlDia*2,bwlDia*2)
o.translate(-bwlDia,-bwlDia,-((bwlDia/2+bwlWall) - flatDifference + bwlWall) )
box=o.result()
o.intersection([halfSphere, box])
bwlOuter=o.result()

####################################################################################################
# create inner bowl
########################
o.sphere(bwlDia);
sphere=o.result()
# cut away flat on underside
flatDifference = (bwlDia/2)-bwlHeight
o.box(bwlDia*2,bwlDia*2,bwlDia*2)
o.translate(-bwlDia,-bwlDia,-((bwlDia/2) - flatDifference))
box=o.result()
o.intersection([sphere, box])
bwlInner=o.result()
o.difference([bwlOuter, bwlInner])
o.translate(0,0,bwlHeight+bwlWall)
bowl=o.result()
o.scale(scalingFactor, scalingFactor, scalingFactor)
o.output(bowl)

####################################################################################################
# show cross section of bowl
##############################

# ~ o.box(bwlDia*2,bwlDia*2,bwlDia*2)
# ~ o.translate(-bwlDia,-2*bwlDia, -bwlDia)
# ~ box=o.result()
# ~ o.difference([bowl, box])
# ~ o.output(o.result())
