使用Python中的turtle模块绘制五角星

代码

# 画国旗上的五角星

import turtle

import math

import numpy as np

# 按照下面网址的国旗上五个五角星的相对位置绘制

# https://wenku.baidu.com/view/799890eb4afe04a1b071ded9.html

# HEIGHT 和半径相关,是网址中矩形的高度

HEIGHT = 200

width = HEIGHT * 1.5

mid_star_radius = HEIGHT * (3/10)

small_star_radius = mid_star_radius * (1/3)

# 四个小的五角星相对于中心五角星的位置

move_vectors = [(5, 3), (7, 1), (7, -2), (5, -4)]

move_vectors = [(item[0] * small_star_radius, item[1] * small_star_radius) for item in move_vectors]

def calculate_coordinate(radius):

# 默认圆心在坐标原点

# 给半出径计算五角星顶点的坐标

RADIUS = radius

# 顶点dot0为坐标为(0, RADIUM)

dots = [None for x in range(0, 5)]

dots[0] = (0, RADIUS)

# 顶点编号dot0, dot1, dot2, dot3, dot4为顺时针顺序

# 两个点之间的夹角为

angle = 2 * math.pi / 5

# dot1与x轴正向(1, 0)的夹角

angle_dot1_1_0 = math.pi / 2 - angle

dots[1] = (RADIUS * math.cos(angle_dot1_1_0), RADIUS * math.sin(angle_dot1_1_0))

# dot4 与 dot1 关于y轴对称

dots[4] = (-dots[1][0], dots[1][1])

# dot2 与 Y轴负方向的夹角

angle_dot2_0_negative_1 = math.pi - 2 * angle

dots[2] = (RADIUS * math.sin(angle_dot2_0_negative_1), - RADIUS * math.cos(angle_dot2_0_negative_1))

# dot3 与 dot2 关于y轴对称

dots[3] = (- dots[2][0], dots[2][1])

return dots

def draw_five_point_star(dots):

# 传入五个点的坐标,绘制五角星

turtle.penup()

turtle.goto(dots[0])

turtle.pendown()

turtle.begin_fill()

for i in [2, 4, 1, 3, 0]:

turtle.goto(dots[i])

turtle.end_fill()

turtle.hideturtle()

def move_rotate_star(dots, x, y, angle):

# 移动和旋转五角星

move_matrix = np.array([[x], [y]])

# 旋转矩阵

rotation_matrix = np.array([[math.cos(angle), -math.sin(angle)], [math.sin(angle), math.cos(angle)]])

dots_matrix_list = [np.array(dot).reshape(2,1) for dot in dots]

# 旋转后的坐标

rotated_dots = [np.matmul(rotation_matrix, dot) for dot in dots_matrix_list]

# 根据x,y移动后的坐标

dots_new = [dot + move_matrix for dot in rotated_dots]

dots_new = [tuple(dot.reshape(1,2).tolist()[0]) for dot in dots_new]

return dots_new

star_center = calculate_coordinate(mid_star_radius)

star_small = calculate_coordinate(small_star_radius)

turtle.setup(width*2, HEIGHT *2 )

turtle.bgcolor("red")

turtle.color("yellow", "yellow")

# 画出中间的五角星

draw_five_point_star(star_center)

# 计算出四个小的五角星顶点坐标后,根据上述网址的相对位置移动和旋转五角星

star_num = 1

for move_args in move_vectors:

if star_num < 3:

angle = math.pi - math.atan(move_args[0]/move_args[1])

else:

angle = - math.atan(move_args[0]/move_args[1])

star_small_move = move_rotate_star(star_small, *move_args, angle)

draw_five_point_star(star_small_move)

star_num += 1

turtle.done()

# todo 按照国旗上的位置,需要将图案整体向左上角移动

结果

如何用python的turtle画五角星_使用Python的turtle模块画五角星相关推荐

  1. python乌龟画五角星_使用Python的turtle模块画五角星

    使用Python中的turtle模块绘制五角星 代码 # 画国旗上的五角星 import turtle import math import numpy as np # 按照下面网址的国旗上五个五角星 ...

  2. python turtle画烟花_用Python写一个绚丽的烟花!

    Python人工智能 - 一节课快速认识人工智能必备语言:python - 创客学院直播室​www.makeru.com.cn 哈喽大家好,小编来教大家如何用Python写一个绚丽的烟花,下面我们开始 ...

  3. 用python的turtle画圣诞树_使用Python画了一棵圣诞树的实例代码

    分享给大家一篇文章,教你怎样用Python画了一棵圣诞树,快来学习. 如何用Python画一个圣诞树呢? 最简单: height = 5 ​ stars = 1 for i in range(heig ...

  4. pythonturtle画房子_用python的turtle模块实现给女票画个小心心

    晚上自习无聊 正好拿自己的平板电脑用python写了个小程序,运用turtle模块画一个小心心,并在心上画女票名字的首字母缩写,单纯只为红颜一笑. 代码贴出来,很简单 import turtle im ...

  5. python的turtle画小人_利用Python如何画一颗心、小人发射爱心

    源码: #!/usr/bin/env python # -*- coding:utf-8 -*- import turtle import time # 画心形圆弧 def hart_arc(): f ...

  6. python turtle画动物_用python画简单的动物

    用python画简单的图片,是使用turtle库绘制出来的,turtle翻译成汉语叫乌龟,turtle是通过各种函数控制像素坐标进行前进.后退变换方向等操作,通过函数设置画笔颜色和填充颜色进行颜色的勾 ...

  7. python用turtle画月亮_使用Python的turtle画小猪乔治和哆啦 A 梦

    本人是Python新人小白,欢迎各位大佬指正,本文介绍的是用Python的turtle画一只小猪乔治. 还有本人画画基础超级差= =没天赋,画参考度娘上的一个图片画的. 先上总代码,然后说说我写的思路 ...

  8. python画樱桃小丸子_学python画图最快的方式——turtle小海龟画图

    原标题:学python画图最快的方式--turtle小海龟画图 python中的画图方式主要有三种:turtle.tkinter.pygame,我们先从最简单的turtle开始. 学python画图最 ...

  9. 用python画小花_用python的小海龟 Turtle 画一朵好看又有趣的小花

    1967年, Daniel G. Bobrow , Wally Feurzeig , Seymour Papert 和 Cynthia Solomon 设计了LOGO编程语言,用一种直观的方式教孩子们 ...

  10. python简笔画蚂蚁_使用python turtle绘制简笔画大白-Go语言中文社区

    使用python turtle绘制简笔画大白 完整代码: import turtle as t pen = t.Turtle() # 定义画笔实例 pen.speed(0) pen.pensize(5 ...

最新文章

  1. 每日一皮:妹子们写的代码,Bug为什么这么多?
  2. (1 24) 3 java代码_算24点 java代码
  3. 提取文件出错_提取中文、英文和数字,其实很简单
  4. 解决linux不能安装g++问题
  5. 程序员吐槽_阿里程序员回老家被哥们吐槽,破IT就破IT,还阿里巴巴
  6. Gitlab 项目上传
  7. python父类方法的装饰器_Python使用装饰器自动调用父类__init__
  8. jmeter 添加虚拟IP
  9. aix 在线软件包安装 字符集 mysql安装
  10. 简单 fibonacci 函数
  11. ElasticSearch2.1 基于空间位置geo_query距离计算
  12. 华为交换机基础命令合集
  13. 【别再说不懂linux命令了,再给你】
  14. 9个超绚丽的HTML5 3D图片动画特效
  15. 计算机网络:非持久HTTP连接 VS 持久性HTTP 连接
  16. SAP 有关BOM有效期以及ECM
  17. mac c语言identifier,mac下自动切换输入法
  18. short message
  19. JAVA虚拟机JVM工作原理
  20. 面向企业级的开源WebGIS解决方案--MapGuide(介绍)

热门文章

  1. 大天使之剑H5游戏超详细图文架设教程
  2. Visio画出的图,裁剪成固定大小再添加马赛克的方法
  3. 新唐MCU之UART软硬件调试过程记录及总结
  4. 微信公众平台 登陆php,javascript - 微信公众号开发,如何使用户保持登录状态
  5. 悉尼大学商业数据科学与计算机学院,悉尼大学数据科学专业
  6. 悉尼大学计算机相关专业硕士,悉尼大学计算机硕士课程详细介绍
  7. win10桌面无限刷新
  8. [STM8L15x]输入捕获获取PWM占空比
  9. jquery查找指定id元素下的某个或某些元素
  10. 车牌识别SDK原理分析