def cylinder(image, coord, extent, radius, color, shadow=False, finish=None, blob=None): # coord is the center of one end, with the center of the other end # in the direction determined by extent. blob can be True or a # blob strength. import povray as pr x = _format_appearance(color, finish) finish, pigment, interior = x if blob is True: blob = 1.0 w = image.handle.write coord1 = _coord2pr(image, coord) x, y, z = coord1 width, height, depth = extent coord2 = x + width, y - height, z - depth name = image._make_object_name() ns = None if not shadow: ns = pr.no_shadow() w( pr.declare( name, pr.cylinder( pr.vector(*coord1), pr.vector(*coord2), radius, pigment, finish, interior, ns, ))) w(pr.object_(name)) # HACK: min_extent and max_extent doesn't work for blobs for some # reason. Solution is to draw the object so that the extent can # be calculated, and then draw a blob at the same place. if blob: w( pr._fmt_complex( "blob", pr.blob_threshold(0.01), pr.blob_cylinder(pr.vector(*coord1), pr.vector(*coord2), radius, blob), pigment, finish, interior, ns, )) w("\n")
def pillar(x,y,z,height): return pv.cylinder([x,y,z],[x,y+height,z],5,"Black")
def burner(x,y,z): return pv.cylinder([x,y,z], [x,y+burnerheight,z], burnerdiameter/2,"Silver"),
def house(x,y,z): return pv.cylinder([x,y,z],[x,y+2,z],10,"Silver")