Utilisez la bibliothèque de tortues de Python pour dessiner le drapeau rouge cinq étoiles

Table des matières

 

1. Idée générale

2. Affichage des codes

3. Effet d'exécution du code


1. Idée générale

        Retrouvez la description du drapeau rouge standard cinq étoiles, comme indiqué dans la première image ci-dessous (source : Baidu Encyclopedia). Trouvez le diagramme de ligne d'encre du drapeau rouge cinq étoiles dans la deuxième image ci-dessous.

2d9e80f82a604477a54aafa1f26ac116.png

f479ef38a46143f9be2b30da14f5c823.png

         Nous définissons d'abord un petit carré de 10 pixels, dessinons cinq étoiles à cinq branches dans le deuxième quadrant, et l'origine est le centre du drapeau.

        Les coordonnées du coin supérieur gauche du drapeau rouge cinq étoiles sont (-150, 100). Lors du dessin du drapeau rouge cinq étoiles, la tortue est orientée vers la droite par défaut. Avancez de 300 pixels puis tournez à droite de 90. degrés. Avancez ensuite de 200 pixels jusqu'à ce que l'arrière-plan du drapeau rouge à cinq étoiles soit terminé, puis remplissez-le de rouge. Cette valeur de couleur peut être obtenue via le sélecteur de couleur ou directement en utilisant le paramètre "rouge".

        En dessinant cinq étoiles à cinq branches, nous pouvons trouver ce que les cinq étoiles à cinq branches ont en commun : les quatre petites étoiles à cinq branches et la grande étoile à cinq branches ne diffèrent que par leur taille, leur orientation et leurs coordonnées. D'après le diagramme de lignes à l'encre du drapeau rouge à cinq étoiles, nous pouvons savoir que les coordonnées de la grande étoile à cinq branches et des quatre petites étoiles à cinq branches (de haut en bas) sont (-100,50), (-50 ,80), (-30,60), (- 30,30), (-50,10). Le rayon des cercles circonscrits de la grande étoile à cinq branches et de la petite étoile à cinq branches est respectivement de 30 pixels et 10 pixels. Ensuite, la longueur de l'étoile à cinq branches peut être calculée en fonction du rayon du cercle circonscrit et de la Théorème de Pythagore (la longueur de l'étoile à cinq branches qui nécessite cinq coups).

        Ensuite, nous concevons une fonction pour dessiner ces cinq étoiles à cinq branches. Parce qu'elles sont similaires, elles peuvent être dessinées via une fonction. Lors du dessin, nous devons unifier un angle de dessin (le processus de dessin d'étoiles à cinq branches est similaire. Si vous souhaitez dessiner l'effet désiré. Pour obtenir l'effet souhaité, vous devez définir une référence d'angle). En fonction de l'orientation de la grande étoile à cinq branches, définissez son angle de rotation sur 0°. Le paramètre d'angle transmis est l'angle relatif à la grande étoile à cinq branches (de combien de degrés elle tourne dans le sens inverse des aiguilles d'une montre). .

        L'angle de rotation de la petite étoile à cinq branches peut être obtenu grâce au diagramme de lignes d'encre combiné avec la fonction trigonométrique inverse. Voici un exemple, qui est l'orientation de la petite étoile à cinq branches supérieure. Nous pouvons le savoir grâce à l'encre diagramme linéaire selon lequel il tourne dans le sens inverse des aiguilles d'une montre par rapport à la grande étoile à cinq branches ( 90+arctan(3/5)*180/Π)°. La fonction arctangente calcule une valeur en radian. Pour la convertir en valeur d'angle, elle doit être multipliée par 180/Π. Dans la bibliothèque mathématique Python, la fonction arctangente est math.atan() et Π est représenté par math.pi.

        Ensuite, nous pouvons définir la fonction pour dessiner une étoile à cinq branches. Lorsque nous aurons fini de dessiner une étoile à cinq branches, nous ajusterons la direction vers le haut. Ensuite, prenons comme exemple la grande étoile à cinq branches.

        Les coordonnées initiales du pinceau sont le centre du cercle circonscrit de la grande étoile à cinq branches, qui est le centre de la grande étoile à cinq branches. Nous devons d'abord nous rendre au sommet supérieur de la grande étoile à cinq branches. Après avoir peint le fond rouge du drapeau rouge cinq étoiles, la direction du pinceau est vers la droite. Nous devons ajuster la direction du pinceau vers le haut, donc avant de peindre, nous devons faire pivoter le pinceau de 90° vers la gauche (rotation de 90° dans le sens antihoraire). Après cela, le pinceau est toujours au centre du cercle, mais la direction a changé. Nous devons commencer à dessiner à partir du sommet, avancer d'abord d'un rayon (30 pixels), et maintenant la direction et la position sont les flèches. pointant vers le haut au sommet de l'image ci-dessous (dessinée via PS). Après cela, nous devons tourner de 162° vers la droite (162° dans le sens des aiguilles d'une montre), la direction est indiquée par une autre flèche au sommet supérieur de la figure.

        Après cela, vous devez avancer sur toute la longueur de l’étoile à cinq branches pour atteindre la flèche droite dans le coin inférieur droit. La longueur de l'étoile à cinq branches est calculée à l'aide du théorème de Pythagore combiné au diagramme de lignes d'encre. La moitié de la longueur est le rayon * un tiers de la racine de huit (la moitié de la longueur de l'étoile à cinq branches). étoile : rayon du cercle circonscrit = racine de huit : trois), puis multipliez par 2 pour obtenir la longueur de l'étoile à cinq branches (c'est-à-dire la distance pour avancer), puis faites-la pivoter de 162° (la direction est indiqué dans l'autre direction dans le coin inférieur droit de l'image ci-dessous (approximativement au nord-ouest)), puis faites une boucle 5 fois pour atteindre le point non ascendant du sommet supérieur de la grande étoile à cinq branches dans l'image ci-dessous. de la flèche.

1f83c35df4a54a4cbea2d99ce78352df.png

         Afin de réutiliser la fonction de dessin d'une étoile à cinq branches, nous devons pointer l'orientation finale vers la direction standard (c'est-à-dire vers le haut moins la direction de l'angle dans le sens inverse des aiguilles d'une montre, et la grande étoile à cinq branches passe dans le paramètre 0, qui est vers le haut). A ce moment, nous devons changer l’orientation de 162° vers la gauche.

        Les différences lors du dessin d'une petite étoile à cinq branches sont les coordonnées du centre du cercle, le rayon du cercle circonscrit et l'orientation initiale. Il est à noter qu'après modification de l'orientation initiale, la position finale de l'étoile à cinq branches après dessin n'est pas vers le haut mais présente un écart par rapport à l'angle d'orientation initial. Lorsque la fonction est définie, en plus du réglage de l'orientation initiale au début, il doit également tourner dans le sens opposé à la fin. Par exemple, si au début, il est tourné de 30° dans le sens inverse des aiguilles d'une montre, et finalement il doit être tourné de 30° dans le sens des aiguilles d'une montre, pour que l'orientation soit la orientation standard (vers le haut, pratique pour dessiner d'autres petites étoiles à cinq branches) une fois la fonction exécutée.

2. Affichage des codes

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. Effet d'exécution du code

        Étant donné que la présence du drapeau national est considérée comme une violation, vous pouvez l'exécuter sur votre propre ordinateur et l'effet sera celui du drapeau rouge cinq étoiles.

54d8a01e532e44299c0b6138c0a9492c.png

 

 

 

Je suppose que tu aimes

Origine blog.csdn.net/qq_59744114/article/details/129207568
conseillé
Classement