예제 #1
0
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)])
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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
예제 #5
0
파일: anim.py 프로젝트: galqiwi/python-mipt
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']))
예제 #6
0
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)])
예제 #7
0
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)
예제 #8
0
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
예제 #9
0
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
예제 #10
0
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)
예제 #11
0
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)
예제 #12
0
            (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)
예제 #13
0
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),
예제 #14
0
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()