Пример #1
0
def draw_figure(point, angle, lenght,  angle0, color):
    point_start = point
    for angle_step in range(0, 360 - angle0, angle0):
        vector = sd.get_vector(start_point=point, angle=angle_step+angle, length=lenght, width=3)
        vector.draw(color=color)
        point = vector.end_point
    sd.line(start_point=point, end_point=point_start, width=3, color=color)
Пример #2
0
def draw_branches(start_point, angle, length, delta):
    if length < 4:
        return
    v1 = sd.get_vector(
        start_point,
        angle=angle,
        length=length,
    )
    v1.draw()
    next_point = v1.end_point
    x = int(30 / 100 * 40)
    y = int(length / 100 * 20)
    length = sd.random_number(length - y, length + y)
    delta = sd.random_number(delta - x, delta + x)
    next_length = int(0.75 * length)
    draw_branches(
        start_point=next_point,
        angle=angle + delta,
        length=next_length,
        delta=delta,
    )
    draw_branches(
        start_point=next_point,
        angle=angle - delta,
        length=next_length,
        delta=delta,
    )
Пример #3
0
def draw_polygon(point, step, length, delta):
    next_point = point
    for angle in range(0, 300, step):
        v1 = sd.get_vector(start_point=next_point, angle=angle + delta, length=length, width=1)
        v1.draw(color=sd.COLOR_RED)
        next_point = v1.end_point
    sd.line(start_point=next_point, end_point=point, color=sd.COLOR_RED, width=1)
Пример #4
0
 def redraw(self):
     angle = self.angle + self.adv_angle
     sd.line(start_point=self.old_point_start, end_point=self.old_point_end, color=sd.background_color, width=2)
     vector = sd.get_vector(start_point=self.base_point, angle=angle, length=self.length)
     vector.draw(color=self.color, width=2)
     self.old_point_end = vector.end_point
     self.old_point_start = copy.deepcopy(self.base_point)
Пример #5
0
def figure(point, leng, angle, number_of_points, color):
    new_point = point
    for i in range(0, number_of_points - 1):
        vector = sd.get_vector(new_point, angle * i, length=leng)
        vector.draw(color=color)
        new_point = vector.end_point
    sd.line(start_point=new_point, end_point=point, color=color)
Пример #6
0
def tree(tree_x_cor, tree_y_cor, color, tree_angle, branch_angle, branch_length, trunk_length, branch_width):
    import random

    def draw_branches(start_point, angle, length):
        if length < 3:
            return
        angle_delta = branch_angle
        delta_minus = angle_delta - (0.4 * angle_delta)
        delta_plus = angle_delta + (0.4 * angle_delta)
        random_angle_change = sd.random_number(a=delta_minus, b=delta_plus)

        length_delta = .75
        length_minus = length_delta - (0.2 * length_delta)
        length_plus = length_delta + (0.2 * length_delta)
        random_length_change = random.random() * (length_minus - length_plus) + length_plus

        next_angle_right = angle - random_angle_change
        next_angle_left = angle + random_angle_change
        next_length = length * random_length_change

        branch_right = sd.get_vector(start_point=start_point, angle=next_angle_right, length=next_length, width=2)
        branch_right.draw(color=color)
        branch_left = sd.get_vector(start_point=start_point, angle=next_angle_left, length=next_length, width=2)
        branch_left.draw(color=color)

        next_point_right = branch_right.end_point
        next_point_left = branch_left.end_point
        draw_branches(start_point=next_point_right, angle=next_angle_right, length=next_length)
        draw_branches(start_point=next_point_left, angle=next_angle_left, length=next_length)

    sd.start_drawing()
    root_point = sd.get_point(x=tree_x_cor, y=tree_y_cor)
    trunk = sd.get_vector(start_point=root_point, angle=tree_angle, length=trunk_length, width=branch_width)
    trunk.draw(color=color)
    draw_branches(start_point=trunk.end_point, angle=tree_angle, length=branch_length)
Пример #7
0
def branch(point, angle, length):
    if length < 5:
        return
    v1 = sd.get_vector(start_point=point, angle=angle+30, length=length, width=3)
    v1.draw()
    v2 = sd.get_vector(start_point=point, angle=angle-30, length=length, width=3)
    v2.draw()
    next_point1 = v1.end_point
    next_point2 = v2.end_point
    a = sd.random_number(-40,40)/100
    b = sd.random_number(80,120)/100
    next_angle1 = angle + 30 + (30*a)
    next_angle2 = angle - 30 + (30*a)
    next_length = length*0.75*b
    branch(point=next_point1, angle=next_angle1, length=next_length)
    branch(point=next_point2, angle=next_angle2, length=next_length)
Пример #8
0
def any_shape(point, length, angle, width, side_change):
    angle_change = 360 // side_change
    for v in range(0, 360, angle_change):
        v = sd.get_vector(start_point=point, angle=angle, length=length, width=width)
        v.draw(color=color)
        point = v.end_point
        angle += angle_change
Пример #9
0
def tr(start_p, corn, side_len):
    side1 = sd.get_vector(start_point=start_p, angle=corn, length=side_len)
    side1.draw()
    sd.circle(center_position=start_p, radius=5)

    side2 = sd.get_vector(start_point=side1.end_point,
                          angle=side1.angle + 120,
                          length=side_len)
    side2.draw()
    sd.circle(center_position=side1.end_point, radius=5)

    side3 = sd.get_vector(start_point=side2.end_point,
                          angle=side2.angle + 120,
                          length=side_len)
    side3.draw()
    sd.circle(center_position=side2.end_point, radius=5)
Пример #10
0
def any_figure(number_of_sides, start_point, angle, length, color, width):
    sides = []
    sides.append(
        sd.get_vector(start_point=start_point, angle=angle, length=length))
    sides[0].draw(color=color, width=width)
    for i in range(1, number_of_sides, 1):
        sides.append(
            sd.get_vector(start_point=sides[i - 1].end_point,
                          angle=angle + 360 * i / number_of_sides,
                          length=length,
                          width=3))
        sides[i].draw(color=color, width=width)
    sd.line(start_point=start_point,
            end_point=sides[len(sides) - 1].end_point,
            color=color,
            width=width)
Пример #11
0
 def draw_vector(point, angle, length, width):
     vector = sd.get_vector(start_point=point,
                            angle=angle,
                            length=length,
                            width=width)
     vector.draw()
     return vector
Пример #12
0
def geometry(point, angles=3, length=100, color=COLOR_YELLOW):
    point_1 = point
    for angle in range(0, angles-1, 1):
        v = sd.get_vector(point, angle=angle * (360 // angles), length=length)
        point = v.end_point
        v.draw(color)
    sd.line(point_1, point, color=color)
Пример #13
0
 def geometry(point, angle=30, length=100):
     point_1 = point
     for angles in range(0, n - 1, 1):
         v = sd.get_vector(point, angle=angles * (360 // n) + angle, length=length)
         point = v.end_point
         v.draw()
     sd.line(point_1, point)
Пример #14
0
def count_angle(start_point, zero_angle, side_length, count_sides):
    end_point = start_point
    angle_shift = int(360 / count_sides)
    for angle in range(0, 360 - angle_shift, angle_shift):
        v = sd.get_vector(start_point, angle + zero_angle, side_length)
        v.draw()
        start_point = v.end_point
    sd.line(start_point, end_point)
Пример #15
0
def draw_branches(start_point, angle, length):
    if length < 8:
        return
    v1 = sd.get_vector(start_point, angle, length)
    v1.draw()
    draw_branches(v1.end_point, angle - 35, length * 0.8)
    draw_branches(v1.end_point, angle + 35, length * 0.8)
    draw_branches(v1.end_point, angle, length * 0.8)
Пример #16
0
def draw_figure(point, angle, length, step, side):
    for line in range(side):
        v = sd.get_vector(start_point=point,
                          angle=angle + line * step,
                          length=length,
                          width=2)
        v.draw()
        point = v.end_point
Пример #17
0
def pentagon(point_3, angle, color, length):
    v1 = sd.get_vector(
        start_point=point_3,
        angle=angle,
        length=length,
    )
    l1 = sd.line(start_point=point_3,
                 end_point=v1.end_point,
                 color=color,
                 width=1)
    v2 = sd.get_vector(
        start_point=v1.end_point,
        angle=angle + 72,
        length=length,
    )
    l2 = sd.line(start_point=v1.end_point,
                 end_point=v2.end_point,
                 color=color,
                 width=1)
    v3 = sd.get_vector(
        start_point=v2.end_point,
        angle=angle + 144,
        length=length,
    )
    l3 = sd.line(start_point=v2.end_point,
                 end_point=v3.end_point,
                 color=color,
                 width=1)
    v4 = sd.get_vector(
        start_point=v3.end_point,
        angle=angle + 216,
        length=length,
    )
    l4 = sd.line(start_point=v3.end_point,
                 end_point=v4.end_point,
                 color=color,
                 width=1)
    v5 = sd.get_vector(
        start_point=v4.end_point,
        angle=angle + 288,
        length=length,
    )
    l5 = sd.line(start_point=v4.end_point,
                 end_point=v5.end_point,
                 color=color,
                 width=1)
Пример #18
0
def pentagon(point, angle=0, length=200, color=sd.COLOR_YELLOW):
    v1 = sd.get_vector(start_point=point, angle=angle, length=length)
    v1.draw(color=color)

    v2 = sd.get_vector(start_point=v1.end_point, angle=angle + 72, length=length)
    v2.draw(color=color)

    v3 = sd.get_vector(start_point=v2.end_point, angle=angle + 144, length=length)
    v3.draw(color=color)

    v4 = sd.get_vector(start_point=v3.end_point, angle=angle + 216, length=length)
    v4.draw(color=color)

    v5 = sd.get_vector(start_point=v4.end_point, angle=angle + 288, length=length)
    v5.draw(color=color)

    v_corr = sd.line(start_point=v5.end_point, end_point=point, color=color)
Пример #19
0
def draw_hexagon(point_bottom_left, angle=0, length=100):
    width = 3
    figure_angle = 360 / 6
    v1 = None
    for i in range(6):
        if v1:
            v1 = sd.get_vector(start_point=v1.end_point,
                               angle=angle + i * figure_angle,
                               length=length,
                               width=width)
            v1.draw()
        else:
            v1 = sd.get_vector(start_point=point_bottom_left,
                               angle=angle,
                               length=length,
                               width=width)
            v1.draw()
Пример #20
0
def figure(point, tilt, length, sides):
    angle = 360 // sides
    point1 = point
    for angle_step in range(0, 360 - angle, angle):
        v1 = sd.get_vector(point, angle_step + tilt, length)
        v1.draw()
        point = v1.end_point
    sd.line(point1, point)
Пример #21
0
def grass(_x=1200):
    x = 0
    while x < _x:
        point = sd.get_point(x=x, y=0)
        _vector = sd.get_vector(start_point=point, angle=sd.random_number(85, 95), length=sd.random_number(15, 25),
                                width=sd.random_number(2, 3))
        _vector.draw(color=(65, 155, 11))
        x += sd.random_number(1, 4)
Пример #22
0
def tree(vector):
    if vector.length < 5:
        sd.circle(vector.end_point, radius=10, color=sd.COLOR_GREEN, width=0)
        return
    vector.draw(color=sd.COLOR_DARK_ORANGE)
    length = vector.length / 1.5
    width = round(vector.width / 1.3)
    vector_1 = sd.get_vector(vector.end_point,
                             angle=vector.angle - 30,
                             length=length,
                             width=width)
    vector_2 = sd.get_vector(vector.end_point,
                             angle=vector.angle + 30,
                             length=length,
                             width=width)
    tree(vector_1)
    tree(vector_2)
Пример #23
0
def draw_branches(_start_point, _angle, _length, _delta=30):
    if _length < 10:
        return
    v1 = sd.get_vector(start_point=_start_point, angle=_angle, length=_length)
    v2 = sd.get_vector(start_point=_start_point, angle=_angle, length=_length)
    v1.draw()
    next_point = v1.end_point
    next_point2 = v2.end_point
    next_angle = _angle - _delta
    next_angle2 = _angle + _delta
    next_length = _length * .75
    draw_branches(_start_point=next_point,
                  _angle=next_angle,
                  _length=next_length)
    draw_branches(_start_point=next_point2,
                  _angle=next_angle2,
                  _length=next_length)
Пример #24
0
 def draw_figure(point, angle, length):
     _end_point = point
     for _ in range(n):
         v = sd.get_vector(start_point=point, angle=angle, length=length)
         v.draw()
         angle = angle + (360 / n)
         point = v.end_point
     sd.line(start_point=point, end_point=_end_point)
Пример #25
0
def hexagon(point=point3, angle=0, length=100):
    for next_angle in range(0, 360, 60):
        v = sd.get_vector(start_point=point,
                          angle=angle + next_angle,
                          length=length,
                          width=3)
        v.draw()
        point = v.end_point
Пример #26
0
def fig(point, length, angle, angle1):
    for angle in range(angle, angle + 359, angle1):
        v1 = sd.get_vector(start_point=point,
                           angle=angle,
                           length=length,
                           width=1)
        v1.draw()
        point = v1.end_point
Пример #27
0
def square(point=point1, angle=0, length=100):
    for next_angle in range(0, 360, 90):
        v = sd.get_vector(start_point=point,
                          angle=angle + next_angle,
                          length=length,
                          width=3)
        v.draw()
        point = v.end_point
Пример #28
0
def figure(n, angle, point,  length):
    for i in range(n):
        if i < n - 1:
            v = sd.get_vector(start_point=point, angle=angle+i*common(n), length=length, )
            point = v.end_point
            v.draw()
        else:
            v = sd.line(start_point=point, end_point=first_point)
Пример #29
0
def draw_branch(point, angle, length, color):
    branch = sd.get_vector(
        start_point=point,
        angle=angle,
        length=length,
    )
    branch.draw(color=color)
    return branch.end_point
Пример #30
0
def figures(point, angle, length, step):
    start_point = point
    step = step
    for tilt_angle in range(0, 360 - step, step):
        v = sd.get_vector(start_point=start_point, angle=angle + tilt_angle, length=length)
        v.draw()
        start_point = v.end_point
    sd.line(start_point=v.end_point, end_point=point)
Пример #31
0
# pip install simple draw

import simple_draw as sd
start_point = sd.get_point(300, 10)
my_angle = 90
my_length = 200

vector = sd.get_vector(
    start_point = start_point, angle=my_angle, length=my_length, width=6)
vector.draw()

start_point_2 = vector.end_point
my_angle_2 = my_angle - 20
my_length_2 = my_length * .7

vector_2 = sd.get_vector(
    start_point = start_point_2, angle=my_angle_2, length=my_length_2, width=6)
vector_2.draw()

start_point_3 = vector.end_point
my_angle_3 = my_angle + 20
my_length_3 = my_length * .7

vector_3 = sd.get_vector(
    start_point = start_point_3, angle=my_angle_3, length=my_length_3, width=6)
vector_3.draw()

sd.pause()