Utilice la biblioteca de tortugas de Python para dibujar la bandera roja de cinco estrellas

Tabla de contenido

 

1. Idea general

2. Visualización de código

3. Efecto de ejecución de código


1. Idea general

        Encuentre la descripción de la bandera roja estándar de cinco estrellas, como se muestra en la primera imagen a continuación (fuente: Enciclopedia Baidu). Encuentre el diagrama de líneas de tinta de la bandera roja de cinco estrellas en la segunda imagen a continuación.

2d9e80f82a604477a54aafa1f26ac116.png

f479ef38a46143f9be2b30da14f5c823.png

         Primero definimos un pequeño cuadrado de 10 píxeles, dibujamos cinco estrellas de cinco puntas en el segundo cuadrante y el origen es el centro de la bandera.

        Las coordenadas de la esquina superior izquierda de la bandera roja de cinco estrellas son (-150, 100). Al dibujar la bandera roja de cinco estrellas, la tortuga está orientada hacia la derecha por defecto. Avanza 300 píxeles y luego gira a la derecha 90. grados. Luego avance 200 píxeles hasta terminar el fondo de la bandera roja de cinco estrellas, y luego rellénelo con rojo. Este valor de color se puede obtener a través del selector de color o directamente usando el parámetro "rojo".

        Dibujando cinco estrellas de cinco puntas, podemos encontrar lo que tienen en común las cinco estrellas de cinco puntas: las cuatro estrellas pequeñas de cinco puntas y la estrella grande de cinco puntas sólo se diferencian en tamaño, orientación y coordenadas. Según el diagrama de líneas de tinta de la bandera roja de cinco estrellas, podemos saber que las coordenadas de la estrella grande de cinco puntas y las cuatro estrellas pequeñas de cinco puntas (de arriba a abajo) son (-100,50), (-50 ,80), (-30,60), (- 30,30), (-50,10). El radio de los círculos circunscritos de la estrella grande de cinco puntas y la estrella pequeña de cinco puntas son 30 píxeles y 10 píxeles respectivamente. Luego, la longitud de la estrella de cinco puntas se puede calcular en función del radio del círculo circunscrito y la Teorema de Pitágoras (la longitud de la estrella de cinco puntas que requiere cinco trazos).

        Luego diseñamos una función para dibujar estas cinco estrellas de cinco puntas. Debido a que son similares, se pueden dibujar mediante una función. Al dibujar, necesitamos unificar un ángulo de dibujo (el proceso de dibujar estrellas de cinco puntas es similar. Si desea dibujar el Para lograr el efecto deseado, debe establecer una referencia de ángulo). Según la orientación de la gran estrella de cinco puntas, establezca su ángulo de rotación en 0°. El parámetro de ángulo pasado es el ángulo relativo a la gran estrella de cinco puntas (cuántos grados gira en sentido antihorario). .

        El ángulo de rotación de la pequeña estrella de cinco puntas se puede obtener mediante el diagrama de líneas de tinta combinado con la función trigonométrica inversa. Aquí hay un ejemplo, cuál es la orientación de la pequeña estrella de cinco puntas superior. Podemos saberlo a partir de la línea de tinta. diagrama que gira en sentido antihorario en relación con la gran estrella de cinco puntas (90+arctan(3/5)*180/Π)°. La función arcotangente calcula un valor en radianes. Para convertirlo en un valor de ángulo, es necesario multiplicarlo por 180/Π. En la biblioteca matemática de Python, la función arcangente es math.atan() y Π está representada por math.pi.

        Luego podemos definir la función para dibujar una estrella de cinco puntas. Cuando terminemos de dibujar una estrella de cinco puntas, ajustaremos la dirección hacia arriba. A continuación, tomemos como ejemplo la gran estrella de cinco puntas.

        Las coordenadas iniciales del pincel son el centro del círculo circunstante de la gran estrella de cinco puntas, que es el centro de la gran estrella de cinco puntas. Primero debemos ir al vértice superior de la gran estrella de cinco puntas. Después de pintar el fondo rojo de la bandera roja de cinco estrellas, la dirección del pincel es hacia la derecha. Necesitamos ajustar la dirección del pincel hacia arriba, por lo que antes de pintar, debemos girar el pincel 90 ° hacia la izquierda (girar 90 ° en sentido anti-horario). Después de eso, el pincel sigue en el centro del círculo, pero la dirección ha cambiado, tenemos que comenzar a dibujar desde el vértice, primero avanzamos hacia adelante una distancia de radio (30 píxeles), y ahora la dirección y posición son las flechas. apuntando hacia arriba en el vértice superior en la imagen de abajo (dibujada mediante PS). Después de eso, debemos girar 162° hacia la derecha (162° en el sentido de las agujas del reloj), la dirección se muestra con otra flecha en el vértice superior de la figura.

        Después de eso, debes caminar hacia adelante a lo largo de la estrella de cinco puntas para llegar a la flecha derecha en la esquina inferior derecha. La longitud de la estrella de cinco puntas se calcula mediante el teorema de Pitágoras combinado con el diagrama de líneas de tinta. La mitad de la longitud es el radio * un tercio de la raíz de ocho (la mitad de la longitud de la estrella de cinco puntas estrella: radio del círculo circunscrito = raíz de ocho: tres), y luego Multiplica por 2 para obtener la longitud de la estrella de cinco puntas (es decir, la distancia para avanzar), luego gírala 162° (la dirección es se muestra en la otra dirección en la esquina inferior derecha de la imagen de abajo (aproximadamente al noroeste)), y luego haga un bucle 5 veces para llegar al punto no ascendente del vértice superior de la gran estrella de cinco puntas en la imagen de abajo. de la flecha.

1f83c35df4a54a4cbea2d99ce78352df.png

         Para reutilizar la función de dibujar una estrella de cinco puntas, debemos apuntar la orientación final a la dirección estándar (es decir, hacia arriba menos la dirección del ángulo en sentido antihorario pasado, y la gran estrella de cinco puntas pasa en la dirección estándar). parámetro 0, que es hacia arriba) En este momento, necesitamos cambiar la orientación 162° hacia la izquierda.

        Las diferencias al dibujar una pequeña estrella de cinco puntas son las coordenadas del centro del círculo, el radio del círculo circunscrito y la orientación inicial. Cabe señalar que después de modificar la orientación inicial, la posición final de la estrella de cinco puntas después del dibujo no es hacia arriba sino que tiene una desviación del ángulo de orientación inicial. Cuando se define la función, además del ajuste de la orientación inicial al principio, también debe girar en la dirección opuesta al final. Por ejemplo, si al principio se gira 30° en sentido contrario a las agujas del reloj, y finalmente se debe girar 30° en el sentido de las agujas del reloj, para que la orientación sea la orientación estándar (hacia arriba, conveniente para dibujar otras pequeñas estrellas de cinco puntas) después de ejecutar la función.

2. Visualización de código

import turtle
import math

turtle.pensize(3)
turtle.colormode(255)

# 画背景
turtle.pencolor("#ed120c")
turtle.fillcolor("#ed120c")
turtle.begin_fill()
turtle.penup()
turtle.goto(-150, 100)
turtle.pendown()

for i in [300, 200, 300, 200]:
    turtle.forward(i)
    turtle.right(90)
turtle.left(90)
turtle.end_fill()
turtle.penup()


# 画五角星函数,要求传入五角星中心坐标,五角星外接圆半径,五角星逆时针旋转角度(默认角度0度为向上,即大五角星方向)
def Pentagram(x, y, radius, degree):
    length = (radius * math.sqrt(8) // 3) * 2  # 根据五角星外接圆半径计算五角星长度

    turtle.goto(x, y)  # 五角星外接圆中心坐标(即五角星中心坐标)
    turtle.left(degree)  # 五角星逆时针旋转多少度
    turtle.forward(radius)  # 前进外接圆半径距离,到达五角星顶点
    turtle.pendown()

    # 以下为标准画五角星代码,画笔颜色及填充颜色可以通过取色器取
    turtle.right(162)
    turtle.pencolor("#f4ec20")
    turtle.fillcolor("#f4ec20")
    turtle.begin_fill()
    for _ in range(5):
        turtle.forward(length)
        turtle.right(144)
    turtle.end_fill()
    turtle.left(162)

    turtle.right(degree)
    turtle.penup()


# 画大五角星
Pentagram(-100, 50, 30, 0)

# 画第一个小五角星
degree1 = 90 + math.atan(3 / 5) * 180 / math.pi  # 计算第一个小五角星相对于大五角星的逆时针旋转角度,atan计算弧度需要转化为角度
Pentagram(-50, 80, 10, degree1)

# 画第二个小五角星
degree2 = 90 + math.atan(1 / 7) * 180 / math.pi
Pentagram(-30, 60, 10, degree2)

# 画第三个小五角星
degree3 = 90 - math.atan(2 / 7) * 180 / math.pi
Pentagram(-30, 30, 10, degree3)

# 画第四个小五角星
degree4 = 90 - math.atan(4 / 5) * 180 / math.pi
Pentagram(-50, 10, 10, degree4)

turtle.hideturtle()
turtle.done()

3. Efecto de ejecución de código

        Dado que la presencia de la bandera nacional se considera una violación, puede ejecutarlo en su propia computadora y el efecto será el efecto de la bandera roja de cinco estrellas.

54d8a01e532e44299c0b6138c0a9492c.png

 

 

 

Supongo que te gusta

Origin blog.csdn.net/qq_59744114/article/details/129207568
Recomendado
Clasificación