def dog(x_oporn, y_oporn): graph.brushColor("#8B4513") graph.penColor("#8B4513") x2 = x_oporn - 70 # coordinate for head y2 = y_oporn - 50 ellipse(x_oporn, y_oporn, 60, 30) # body front ellipse(x_oporn - 65, y_oporn + 25, 13, 35) # legs front upper ellipse(x_oporn - 10, y_oporn + 45, 13, 35) ellipse(x_oporn + 50, y_oporn - 15, 20, 27) # body behing ellipse(x_oporn + 80, y_oporn - 15, 30, 27) ellipse(x_oporn + 95, y_oporn + 5, 20, 27) ellipse(x_oporn + 110, y_oporn + 35, 5, 25) # legs upper behind ellipse(x_oporn + 60, y_oporn + 15, 5, 25) ellipse(x_oporn - 75, y_oporn + 60, 15, 5) # legs under front ellipse(x_oporn - 21, y_oporn + 80, 15, 5) ellipse(x_oporn + 48, y_oporn + 39, 13, 4) # legs under behind ellipse(x_oporn + 99, y_oporn + 58, 13, 4) graph.penColor("black") graph.rectangle(x2, y2, x2 + 60, y2 + 60) # head ellipse(x2, y2 + 15, 10, 14) # ears ellipse(x2 + 60, y2 + 15, 10, 14) graph.brushColor("white") # left eye ellipse(x_oporn - 52, y_oporn - 22, 7, 3) graph.brushColor("black") ellipse(x_oporn - 52, y_oporn - 22, 2, 2) graph.brushColor("white") # right eye ellipse(x_oporn - 28, y_oporn - 22, 7, 3) graph.brushColor("black") ellipse(x_oporn - 28, y_oporn - 22, 2, 2) x = x_oporn - 60 y = y_oporn + 5 graph.polyline([(x, y), (x + 5, y - 6), (x + 8, y - 7), (x + 10, y - 8), (x + 30, y - 8), (x + 32, y - 7), (x + 35, y - 6), (x + 40, y)]) # mouth without tith graph.brushColor("white") graph.polygon([(x + 5, y - 6), (x + 10, y - 8), (x + 7, y - 15)]) # toth without mouth graph.polygon([(x + 35, y - 6), (x + 30, y - 8), (x + 33, y - 15)])
def sector(x0, y0, radius, start, end, compression, alpha): t = start points = [] while t < end: x = radius * cos(t) y = radius * sin(t) / compression xe = x0 + x * cos(alpha) - y * sin(alpha) ye = y0 + x * sin(alpha) + y * cos(alpha) points.append((xe, ye)) t += pi / 180 graph.polyline(points)
def sector(x0, y0, radius, start, end, compression): """Drawing sector of the circle with center in (x0, y0), stated radius and compression between start and end angles (in initial coordinate system)""" t = start points = [] while t < end: x = radius * cos(t) y = radius * sin(t) / compression xe = x0 + x ye = y0 + y points.append((xe, ye)) t += pi / 180 graph.polyline(points)
def cat_mustache(x1, y1, head_size): """Drawing cat mustache. (x1, y1) - head center""" k = 1 ymin = 0 ymax = 1000 h = 0.02 mult = 0.4 for i in range(-1, 2): x0 = x1 - head_size / 8 + k / 2 y0 = y1 + head_size / 2 + i * head_size / 20 mult *= 1.5 y = ymin points = [] while y < ymax: x = -(mult**2) * y * y xe = x0 + k * x ye = y0 - k * y if -head_size <= x <= 0: points.append((xe, ye)) y += h graph.polyline(points) points.clear() mult = 0.4 for i in range(-1, 2): x0 = x1 + head_size / 8 + k / 2 y0 = y1 + head_size / 2 + i * head_size / 20 mult *= 1.5 y = ymin points = [] while y < ymax: x = (mult**2) * y * y xe = x0 + k * x ye = y0 - k * y if head_size >= x >= 0: points.append((xe, ye)) y += h graph.polyline(points) points.clear() pass
def updatePolygons(): global polygons_screen, polygonTypeV, polygons for polygon in polygons_screen: gr.deleteObject(polygon) for i in polygons: gr.brushColor(i['color'][0], i['color'][1], i['color'][2]) gr.penColor(i['color'][0], i['color'][1], i['color'][2]) if polygonTypeV == 'full': polygons_screen.append(gr.polygon(i['points'])) else: polygons_screen.append(gr.polyline(i['points']))
def cat(x0, y0, size): """Body""" graph.brushColor("#C87137") ellipse(x0, y0, 250 * size, 115 * size, 0, size) """Head""" graph.brushColor("#C87137") ellipse(x0 - 230 * size, y0 - 20 * size, 80, 80, 0, size) """Nose""" graph.polygon([(x0 - 220 * size, y0 + 10 * size), (x0 - 240 * size, y0 + 10 * size), (x0 - 230 * size, y0 + 20 * size)]) graph.penSize(2) graph.penColor("black") graph.line(x0 - 230 * size, y0 + 20 * size, x0 - 230 * size, y0 + 40 * size) graph.polyline( [(x0 - 230 * size, y0 + 40 * size), (x0 - 229 * size, y0 + 41 * size), (x0 - 229 * size, y0 + 42 * size), (x0 - 228 * size, y0 + 41 * size), (x0 - 227 * size, y0 + 42 * size), (x0 - 220 * size, y0 + 42 * size), (x0 - 217 * size, y0 + 40 * size), (x0 - 214 * size, y0 + 37 * size), (x0 - 214 * size, y0 + 33 * size)]) graph.polyline( [(x0 - 230 * size, y0 + 40 * size), (x0 - 231 * size, y0 + 41 * size), (x0 - 231 * size, y0 + 42 * size), (x0 - 232 * size, y0 + 41 * size), (x0 - 233 * size, y0 + 42 * size), (x0 - 240 * size, y0 + 42 * size), (x0 - 243 * size, y0 + 40 * size), (x0 - 246 * size, y0 + 37 * size), (x0 - 246 * size, y0 + 33 * size)])
def plant(a, x, b, y): graph.brushColor(0, 102, 53) graph.penColor(0, 102, 53) graph.penSize(2) # Далее ветки graph.polyline([(119 * a + x, 27 * b + y), (152 * a + x, 30 * b + y), (174 * a + x, 37 * b + y), (199 * a + x, 49 * b + y), (213 * a + x, 58 * b + y), (229 * a + x, 71 * b + y)]) graph.polyline([(274 * a + x, 57 * b + y), (286 * a + x, 41 * b + y), (304 * a + x, 26 * b + y), (326 * a + x, 14 * b + y), (342 * a + x, 7 * b + y), (362 * a + x, 4 * b + y), (376 * a + x, 2 * b + y)]) graph.polyline([(270 * a + x, 113 * b + y), (274 * a + x, 103 * b + y), (280 * a + x, 96 * b + y), (287 * a + x, 88 * b + y), (297 * a + x, 80 * b + y), (305 * a + x, 76 * b + y), (314 * a + x, 76 * b + y), (321 * a + x, 75 * b + y), (329 * a + x, 78 * b + y), (333 * a + x, 79 * b + y)]) graph.polyline([(170 * a + x, 105 * b + y), (178 * a + x, 102 * b + y), (187 * a + x, 100 * b + y), (194 * a + x, 100 * b + y), (203 * a + x, 102 * b + y), (210 * a + x, 105 * b + y), (220 * a + x, 110 * b + y), (228 * a + x, 117 * b + y), (234 * a + x, 123 * b + y), (245 * a + x, 139 * b + y)]) # Далее ствол graph.polygon([(254 * a + x, 53 * b + y), (269 * a + x, 4 * b + y), (275 * a + x, 7 * b + y), (260 * a + x, 56 * b + y)]) graph.polygon([(244 * a + x, 94 * b + y), (256 * a + x, 60 * b + y), (266 * a + x, 64 * b + y), (254 * a + x, 98 * b + y)]) graph.rectangle(247 * a + x, 105 * b + y, 263 * a + x, 165 * b + y) graph.rectangle(247 * a + x, 225 * b + y, 263 * a + x, 173 * b + y) # Далее листья накл. вправо ellipse1(0, -3 * b, a, b, x, y) ellipse1(11 * a, -2 * b, a, b, x, y) ellipse1(21 * a, 0, a, b, x, y) ellipse1(33 * a, 5 * b, a, b, x, y) ellipse1(51 * a, 11 * b, a, b, x, y) ellipse1(50 * a, 71 * b, a, b, x, y) ellipse1(65 * a, 71 * b, a, b, x, y) ellipse1(81 * a, 78 * b, a, b, x, y) # Далее листья накл. влево ellipse2(0, 0, a, b, x, y) ellipse2(15 * a, -10 * b, a, b, x, y) ellipse2(24 * a, -13 * b, a, b, x, y) ellipse2(34 * a, -15 * b, a, b, x, y) ellipse2(44 * a, -16 * b, a, b, x, y) ellipse2(1 * a, 56 * b, a, b, x, y) ellipse2(-13 * a, 56 * b, a, b, x, y) ellipse2(-26 * a, 64 * b, a, b, x, y)
def draw_marlin(): global marlin marlin = list() global lines, rows, p, o while lines <= 1: while rows <= n: # Face marlin.append( polygon([(115 * k + p, 89 * k + o), (108 * k + p, 77 * k + o), (108 * k + p, 70 * k + o), (103 * k + p, 58 * k + o), (104 * k + p, 25 * k + o), (149 * k + p, 20 * k + o), (150 * k + p, 55 * k + o), (141 * k + p, 69 * k + o), (143 * k + p, 77 * k + o), (129 * k + p, 90 * k + o), (115 * k + p, 89 * k + o)])) # Lips marlin.append( polygon([(113 * k + p, 74 * k + o), (118 * k + p, 71 * k + o), (128 * k + p, 71 * k + o), (131 * k + p, 74 * k + o), (124 * k + p, 80 * k + o), (117 * k + p, 80 * k + o), (113 * k + p, 74 * k + o)])) # Eye marlin.append( polyline([(130 * k + p, 52 * k + o), (134 * k + p, 51 * k + o), (139 * k + p, 53 * k + o)])) marlin.append( polyline([(114 * k + p, 52 * k + o), (107 * k + p, 52 * k + o), (107 * k + p, 55 * k + o)])) marlin.append( polyline([(118 * k + p, 64 * k + o), (121 * k + p, 66 * k + o), (124 * k + p, 65 * k + o), (128 * k + p, 65 * k + o)])) marlin.append( polyline([(130 * k + p, 44 * k + o), (139 * k + p, 42 * k + o), (146 * k + p, 48 * k + o)])) marlin.append( polyline([(114 * k + p, 45 * k + o), (107 * k + p, 43 * k + o), (103 * k + p, 46 * k + o)])) # Brows marlin.append( polygon([(126 * k + p, 51 * k + o), (129 * k + p, 48 * k + o), (133 * k + p, 46 * k + o), (141 * k + p, 50 * k + o), (134 * k + p, 50 * k + o), (128 * k + p, 50 * k + o)])) marlin.append( polygon([(117 * k + p, 51 * k + o), (115 * k + p, 48 * k + o), (108 * k + p, 49 * k + o), (104 * k + p, 52 * k + o), (109 * k + p, 51 * k + o), (117 * k + p, 51 * k + o)])) # Hair marlin.append( polygon([(121 * k + p, 27 * k + o), (138 * k + p, 22 * k + o), (146 * k + p, 25 * k + o), (150 * k + p, 40 * k + o), (149 * k + p, 55 * k + o), (142 * k + p, 68 * k + o), (144 * k + p, 78 * k + o), (159 * k + p, 84 * k + o), (159 * k + p, 74 * k + o), (171 * k + p, 61 * k + o), (171 * k + p, 28 * k + o), (162 * k + p, 16 * k + o), (149 * k + p, 14 * k + o), (137 * k + p, 4 * k + o), (112 * k + p, 3 * k + o), (100 * k + p, 15 * k + o), (92 * k + p, 16 * k + o), (95 * k + p, 38 * k + o), (91 * k + p, 44 * k + o), (106 * k + p, 66 * k + o), (103 * k + p, 41 * k + o), (110 * k + p, 35 * k + o), (110 * k + p, 24 * k + o), (121 * k + p, 27 * k + o)])) rows += 1 p += 350 lines += 1 rows = 0 p = -200 o += 400 return marlin
for i in range(-1, 2): x0 = x1 - head / 8 + k / 2 y0 = y1 + head / 2 + i * indent / 2 mult *= 1.5 y = ymin points = [] while y < ymax: x = - (mult ** 2) * y * y xe = x0 + k * x ye = y0 - k * y if x >= - head and x <= 0: points.append((xe, ye)) y += h graph.polyline(points) points.clear() mult = 0.4 for i in range(-1, 2): x0 = x1 + head / 8 + k / 2 y0 = y1 + head / 2 + i * indent / 2 mult *= 1.5 y = ymin points = [] while y < ymax: x = (mult ** 2) * y * y xe = x0 + k * x
def cat(x0, y0, szx, szy, c): # (x0; y0) - koordinati konchika yha; c = 1 ili 2 i otvechayet za cvet kota penColor("black") if c == 1: brushColor(200, 113, 55) else: brushColor(55, 55, 75) # hvost points = [] points.append((70 * szx + x0, 21 * szy + y0)) points.append((76 * szx + x0, 24 * szy + y0)) points.append((82 * szx + x0, 27 * szy + y0)) points.append((85 * szx + x0, 28 * szy + y0)) points.append((91 * szx + x0, 28.5 * szy + y0)) points.append((93 * szx + x0, 28 * szy + y0)) points.append((94.5 * szx + x0, 26 * szy + y0)) points.append((95 * szx + x0, 24 * szy + y0)) points.append((94 * szx + x0, 21.5 * szy + y0)) points.append((92 * szx + x0, 18.5 * szy + y0)) points.append((90 * szx + x0, 16.5 * szy + y0)) points.append((84 * szx + x0, 13 * szy + y0)) points.append((77 * szx + x0, 10 * szy + y0)) points.append((70 * szx + x0, 8 * szy + y0)) points.append((62 * szx + x0, 6 * szy + y0)) polygon(points) # telo circle_base = circle(374, 668, 250) changeCoords(circle_base, [(11 * szx + x0, -2 * szy + y0), (69 * szx + x0, 29 * szy + y0)]) # lapa 1 circle_base = circle(191, 777, 70) changeCoords(circle_base, [(6 * szx + x0, 17 * szy + y0), (13 * szx + x0, 26 * szy + y0)]) # lapa 2 circle_base = circle(98, 723, 100) changeCoords(circle_base, [(13 * szx + x0, 22 * szy + y0), (27 * szx + x0, 30 * szy + y0)]) # lapa 3 circle(60 * szx + x0, 22 * szy + y0, 10 * szy) circle_base = circle(621, 826, 80) changeCoords(circle_base, [(66 * szx + x0, 24 * szy + y0), (73 * szx + x0, 40 * szy + y0)]) # golova circle_base = circle(132, 646, 100) changeCoords(circle_base, [(0.8 * szx + x0, 0.6 * szy + y0), (25.6 * szx + x0, 22.6 * szy + y0)]) # yshi polygon([(x0, y0), (6.4 * szx + x0, 3 * szy + y0), (1.8 * szx + x0, 8 * szy + y0)]) polygon([(23.8 * szx + x0, -1 * szy + y0), (17.8 * szx + x0, 2.6 * szy + y0), (22.6 * szx + x0, 7.4 * szy + y0)]) penSize(0.5) brushColor(222, 170, 135) polygon([(szx + x0, szy + y0), (5.4 * szx + x0, 3 * szy + y0), (2.2 * szx + x0, 6.6 * szy + y0)]) polygon([(23 * szx + x0, y0), (18.6 * szx + x0, 2.8 * szy + y0), (22.4 * szx + x0, 6 * szy + y0)]) # glaza penSize(1) if c == 1: brushColor(136, 170, 0) else: brushColor(141, 207, 255) circle(8 * szx + x0, 12.6 * szy + y0, 3 * szy) circle(18.6 * szx + x0, 12.6 * szy + y0, 3 * szy) "zrachki" brushColor("black") circle_base = circle(185, 646, 30) changeCoords(circle_base, [(8.4 * szx + x0, 9.5 * szy + y0), (9.2 * szx + x0, 15.5 * szy + y0)]) circle_base = circle(185, 646, 30) changeCoords(circle_base, [(19 * szx + x0, 9.5 * szy + y0), (19.8 * szx + x0, 15.5 * szy + y0)]) # bliki blik(6.6 * szx + x0, 10 * szy + y0, 0.9 * szx, 0.9 * szy) blik(17.2 * szx + x0, 10 * szy + y0, 0.9 * szx, 0.9 * szy) # nos penColor("black") brushColor(222, 170, 135) polygon([(12 * szx + x0, 16.6 * szy + y0), (14.2 * szx + x0, 16.6 * szy + y0), (13.2 * szx + x0, 17.8 * szy + y0)]) # rot points = [] points.append((13.2 * szx + x0, 17.8 * szy + y0)) points.append((13.2 * szx + x0, 19.4 * szy + y0)) points.append((12.6 * szx + x0, 20.2 * szy + y0)) points.append((11.6 * szx + x0, 20.2 * szy + y0)) points.append((11.4 * szx + x0, 20 * szy + y0)) polyline(points) points = [] points.append((13.2 * szx + x0, 19.4 * szy + y0)) points.append((13.8 * szx + x0, 20.2 * szy + y0)) points.append((14.8 * szx + x0, 20.2 * szy + y0)) points.append((15 * szx + x0, 20 * szy + y0)) polyline(points) # ysi points = [] points.append((16.4 * szx + x0, 17.8 * szy + y0)) points.append((21.8 * szx + x0, 16.8 * szy + y0)) points.append((27 * szx + x0, 16.2 * szy + y0)) points.append((31.2 * szx + x0, 16.8 * szy + y0)) polyline(points) points = [] points.append((16.4 * szx + x0, 18.4 * szy + y0)) points.append((21.4 * szx + x0, 17.8 * szy + y0)) points.append((26.8 * szx + x0, 17.8 * szy + y0)) points.append((31.2 * szx + x0, 18.6 * szy + y0)) polyline(points) points = [] points.append((16.4 * szx + x0, 19 * szy + y0)) points.append((21.6 * szx + x0, 19 * szy + y0)) points.append((27 * szx + x0, 19.8 * szy + y0)) points.append((31 * szx + x0, 21 * szy + y0)) polyline(points) points = [] points.append((10 * szx + x0, 17.8 * szy + y0)) points.append((4.6 * szx + x0, 16.8 * szy + y0)) points.append((-0.6 * szx + x0, 16.2 * szy + y0)) points.append((-4.8 * szx + x0, 16.8 * szy + y0)) polyline(points) points = [] points.append((10 * szx + x0, 18.4 * szy + y0)) points.append((5 * szx + x0, 17.8 * szy + y0)) points.append((-0.4 * szx + x0, 17.8 * szy + y0)) points.append((-4.8 * szx + x0, 18.6 * szy + y0)) polyline(points) points = [] points.append((10 * szx + x0, 19 * szy + y0)) points.append((4.8 * szx + x0, 19 * szy + y0)) points.append((-0.6 * szx + x0, 19.8 * szy + y0)) points.append((-4.6 * szx + x0, 21 * szy + y0)) polyline(points)
def ball(x0, y0, szx, szy): "(x0; y0) - koordinati centra klybka" penSize(1) penColor("black") brushColor(153, 153, 153) circle(x0, y0, -10.2 * szy) # polosi na share (sverhy vniz) points = [] points.append((2 * szx + x0, -6.6 * szy + y0)) points.append((5.8 * szx + x0, -4.6 * szy + y0)) points.append((8 * szx + x0, -1.2 * szy + y0)) points.append((8.6 * szx + x0, 3.4 * szy + y0)) polyline(points) points = [] points.append((-3.6 * szx + x0, -6.8 * szy + y0)) points.append((1.4 * szx + x0, -4 * szy + y0)) points.append((5.2 * szx + x0, -1.8 * szy + y0)) points.append((7.4 * szx + x0, 4.6 * szy + y0)) polyline(points) points = [] points.append((-6 * szx + x0, -5 * szy + y0)) points.append((0.6 * szx + x0, -3.2 * szy + y0)) points.append((4.8 * szx + x0, 1.2 * szy + y0)) points.append((6.4 * szx + x0, 6.6 * szy + y0)) polyline(points) points = [] points.append((-2.6 * szx + x0, -0.8 * szy + y0)) points.append((-3.6 * szx + x0, -0.4 * szy + y0)) points.append((-5 * szx + x0, 3 * szy + y0)) points.append((-5 * szx + x0, 6.4 * szy + y0)) polyline(points) points = [] points.append((0.2 * szx + x0, -0.8 * szy + y0)) points.append((-2 * szx + x0, 2 * szy + y0)) points.append((-3 * szx + x0, 4.4 * szy + y0)) points.append((-3 * szx + x0, 7.6 * szy + y0)) polyline(points) points = [] points.append((3.2 * szx + x0, 1.6 * szy + y0)) points.append((1.4 * szx + x0, 3.4 * szy + y0)) points.append((0.8 * szx + x0, 5.6 * szy + y0)) points.append((0.8 * szx + x0, 8.6 * szy + y0)) polyline(points) # nitka (zatyhayshaya sinysoida) X0 = -37.4 * szx + x0 Y0 = 7.4 * szy + y0 k = 0.4 * szx # masshtab Ps = 80 # razmer massiva f = 3 # chastota kolebaniy x = 1 # xmax = Ps # diapazon po x h = 1 # shag po х points = [] while x <= xmax: y = math.sin(2 * math.pi * f * (x / Ps)) / (x / Ps) xe = X0 + k * x ye = Y0 + k * y points.append((xe, ye)) x += h penSize(0.4 * szy) penColor(153, 153, 153) polyline(points)
(x, y1 - math.sqrt(abs(((x1 - x2) / 2)**2 / r - (x - (x1 + x2) / 2)**2 / r)))) graph.polygon(el) graph.canvasSize(794 * 900 / 1123, 900) graph.brushColor(0, 255, 255) graph.rectangle(0, 900 * 0.6, 794, 0) graph.brushColor(230, 230, 230) graph.rectangle(0, 900 * 0.6, 794 * 900 / 1123, 900) elips(794 * 900 / 1123 * 0.15, 900 * 0.49, 794 * 900 / 1123 * 0.35, 3) elips(2, 900 * 0.7, 794 * 900 / 1123 * 0.3, 0.3) graph.penSize(5) graph.polyline([(794 * 900 / 1123 * 0.3 + 5, 900 * 0.65), (794 * 900 / 1123 * 0.37, 900 * 0.565), (794 * 900 / 1123 * 0.8, 900 * 0.3)]) graph.penSize(1) graph.elips(794 * 900 / 1123 * 0.25, 900 * 0.595, 794 * 900 / 1123 * 0.4, 4) graph.elips(794 * 900 / 1123 * 0.15, 900 * 0.84, 794 * 900 / 1123 * 0.4, 1.7) graph.elips(794 * 900 / 1123 * 0.32, 900 * 0.9, 794 * 900 / 1123 * 0.5, 6) graph.circle(794 * 900 / 1123 * 0.18, 900 * 0.46, 10) graph.brushColor(77, 77, 77) elips(794 * 900 / 1123 * 0.55, 900 * 0.79, 794 * 900 / 1123 * 0.9, 10) graph.brushColor(22, 80, 68) elips(794 * 900 / 1123 * 0.6, 900 * 0.8, 794 * 900 / 1123 * 0.85, 10) graph.line(794 * 900 / 1123 * 0.8, 900 * 0.3, 794 * 900 / 1123 * 0.8, 900 * 0.8) graph.brushColor("black") graph.circle(794 * 900 / 1123 * 0.235, 900 * 0.5 - 25, 5) graph.circle(794 * 900 / 1123 * 0.35, 900 * 0.5 - 15, 5)
right_ear_light = graph.polygon([(139, 614), (168, 625), (178, 570)]) left_ear_light = graph.polygon([(54, 634), (76, 613), (28, 577)]) graph.brushColor("#C87137") graph.penSize(0) ellipse(519, 741 + 15, 70, 70, 0, 1) ellipse(598 - 27, 817, 30, 70, 0, 1) ellipse(181, 782, 70, 25, 0, 1) """Mustache right""" graph.penSize(2) graph.penColor("black") graph.polyline([(129, 719), (139, 714), (157, 705), (178, 700), (194, 704), (205, 709)]) graph.polyline([(132, 725), (146, 718), (165, 710), (184, 710), (194, 711), (199, 715), (209, 720), (211, 722)]) graph.polyline([(129, 719 + 17), (139, 714 + 17), (157, 705 + 17), (178, 700 + 17), (194, 704 + 17), (205, 709 + 17)]) """Mustache left""" graph.polyline([(89, 716 + 5), (87, 711 + 5), (83, 708 + 5), (78, 704 + 5), (69, 703 + 5), (60, 701 + 5),
def cat(x0, y0, size, d, color): graph.penColor(0, 0, 0) graph.penSize(0.05) # Body if color == 'brown': graph.brushColor(200, 115, 55) else: graph.brushColor(110, 95, 85) oval(x0 + d * 1.2 * size, y0 + size / 6, size * 2 / 3, 5, d * pi / 6) oval(x0, y0, size, 2, 0) oval(x0 + d * 0.8 * size, y0 + size / 4, size / 4, 1, 0) oval(x0 - d * 0.8 * size, y0 + size / 3, size / 4, 2, 0) oval(x0 + d * (0.8 * size + size / 5), y0 + size / 4 + size / 3, size / 4, 3, pi / 2) # Head x1 = x0 - d * size y1 = y0 head = size / 3 oval(x1 - d * head * sin(pi / 4), y1 + head * cos(pi / 4) / 1.5, size / 4, 3, pi / 2) graph.circle(x1, y1, head) if color == 'brown': graph.brushColor(135, 170, 0) else: graph.brushColor(40, 215, 255) graph.circle(x1 - head / 2, y1, head / 4) graph.circle(x1 + head / 2, y1, head / 4) graph.brushColor(0, 0, 0) oval(x1 - head / 2 + head / 10, y1, head / 4 - head / 30, 4, pi / 2) oval(x1 + head / 2 + head / 10, y1, head / 4 - head / 30, 4, pi / 2) graph.penColor(250, 250, 250) graph.brushColor(250, 250, 250) oval(x1 - head / 2 - head / 14, y1 - head / 12, head / 4 - head / 9, 4, pi / 4) oval(x1 + head / 2 - head / 14, y1 - head / 12, head / 4 - head / 9, 4, pi / 4) graph.penColor(0, 0, 0) graph.brushColor(225, 170, 135) nose = [(x1 + head / 15, y1 + head / 3), (x1 - head / 15, y1 + head / 3), (x1, y1 + head / 3 + head / 10)] graph.polygon(nose) graph.line(x1, y1 + head / 3 + head / 10, x1, y1 + head / 2) sector(x1 - head / 8, y1 + head / 2, head / 8, 0, pi / 2 + pi / 6, 1, 0) sector(x1 + head / 8, y1 + head / 2, head / 8, pi / 2 - pi / 6, pi, 1, 0) # Ears indent = head / 10 x2 = x1 + head * 0.9 * sin(pi / 12) y2 = y1 - head * 0.9 * cos(pi / 12) x3 = x1 + head * 0.9 * sin(pi / 3 - pi / 12) y3 = y1 - head * 0.9 * cos(pi / 3 - pi / 12) x4 = x3 + head / 10 y4 = y3 - head / 2 ear = [(x2, y2), (x3, y3), (x4, y4)] if color == 'brown': graph.brushColor(200, 115, 55) else: graph.brushColor(110, 95, 85) graph.polygon(ear) ear = [(x2 + indent, y2), (x3 - indent / 2, y3 - indent / 2), (x4 - indent / 2, y4 + indent / 2)] graph.brushColor(225, 170, 135) graph.polygon(ear) x2 = x1 - head * 0.9 * sin(pi / 12) y2 = y1 - head * 0.9 * cos(pi / 12) x3 = x1 - head * 0.9 * sin(pi / 3 - pi / 12) y3 = y1 - head * 0.9 * cos(pi / 3 - pi / 12) x4 = x3 - head / 10 y4 = y3 - head / 2 ear = [(x2, y2), (x3, y3), (x4, y4)] if color == 'brown': graph.brushColor(200, 115, 55) else: graph.brushColor(110, 95, 85) graph.polygon(ear) ear = [(x2 - indent, y2), (x3 + indent / 2, y3 - indent / 2), (x4 + indent / 2, y4 + indent / 2)] graph.brushColor(225, 170, 135) graph.polygon(ear) # Mustache k = 1 ymin = 0 ymax = 1000 h = 0.02 mult = 0.4 for i in range(-1, 2): x0 = x1 - head / 8 + k / 2 y0 = y1 + head / 2 + i * indent / 2 mult *= 1.5 y = ymin points = [] while y < ymax: x = -(mult**2) * y * y xe = x0 + k * x ye = y0 - k * y if x >= -head and x <= 0: points.append((xe, ye)) y += h graph.polyline(points) points.clear() mult = 0.4 for i in range(-1, 2): x0 = x1 + head / 8 + k / 2 y0 = y1 + head / 2 + i * indent / 2 mult *= 1.5 y = ymin points = [] while y < ymax: x = (mult**2) * y * y xe = x0 + k * x ye = y0 - k * y if head >= x >= 0: points.append((xe, ye)) y += h graph.polyline(points) points.clear()