【简单代码】Python 海龟画图简单实现任何图象落在窗口中心处(五角星为例)

2023-11-03

话不多说直接上代码:

import turtle
import math

def go_centre(zuobiao):  # 此函数实现初始笔点左上移(因为本代码五角星是顺时针画,即在右下角)
    hang_list = []
    lie_list = []
    for hang, lie in zuobiao:
        hang_list.append(hang)
        lie_list.append(lie)
    a = max(hang_list) - min(hang_list)
    b = max(lie_list) - min(lie_list)
    angle = math.atan(b/a)
    length = (math.sqrt(a*a + b*b))/2
    turtle.penup()
    turtle.left(180-angle)
    turtle.forward(length)
    turtle.right(180-angle)
    turtle.pendown()

turtle.screensize(500,500,'black')  # 以下实现画图初始化
turtle.color('white')
turtle.hideturtle()

zuobiao = []  # 以下实现不同极点的坐标积累
turtle.penup()
for i in range(5):
    zuobiao.append(turtle.position())
    turtle.speed(5)
    turtle.forward(100)
    turtle.right(144)
turtle.pendown()

go_centre(zuobiao)  # 实现笔头移位

turtle.begin_fill()  # 以下实现画五角星
for i in range(5):
    turtle.speed(5)
    turtle.forward(100)
    turtle.right(144)
turtle.end_fill()

turtle.done()  # 实现窗口停留

 就是以所画图象矩形对角线的中点来大致作为可以把图象画在坐标原点的中点。

48ffbdf1ba754b2f8f1830c50b6f6019.png

 因为无论什么样的图形,它都能包含进一个矩形里,而矩形对角线的中点就可以近似作为这个图形的中点,把中点放在原点上,不就是图象在中心了吗。

def go_centre(zuobiao):  # 此函数实现初始笔点左上移(因为本代码五角星是顺时针画,即在右下角)
    hang_list = []
    lie_list = []
    for hang, lie in zuobiao:
        hang_list.append(hang)
        lie_list.append(lie)
    a = max(hang_list) - min(hang_list)
    b = max(lie_list) - min(lie_list)
    angle = math.atan(b/a)
    length = (math.sqrt(a*a + b*b))/2
    turtle.penup()
    turtle.left(180-angle)
    turtle.forward(length)
    turtle.right(180-angle)
    turtle.pendown()

 此函数就是令开始画的点移到上图视黄线的末端,从那里开始画。(因为本代码图象画出来是在坐标系的第四象限,所以就往左上方移,各位在参考时可以改一下相关内容)

zuobiao = []  # 以下实现不同极点的坐标积累
turtle.penup()
for i in range(5):
    zuobiao.append(turtle.position())
    turtle.speed(5)
    turtle.forward(100)
    turtle.right(144)
turtle.pendown()

因为此函数要用到图象所以极点的坐标,就要在开始时进行坐标的收集(就先让它画一遍),各位不要忘了把画笔抬起来。

 

但经过实践,图象越大,误差就越大,毕竟是简单方法嘛

 

 综上就这么多,这是我第一次学习的结果,就供各位参考,如有更好的方法请在评论区指点

这是我第二次发帖,不喜勿喷!

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【简单代码】Python 海龟画图简单实现任何图象落在窗口中心处(五角星为例) 的相关文章

  • Lighttpd 和 cgi python

    我正在尝试通过 lighttpd 执行一些 python 脚本 但是当我尝试运行它时 我只得到一个要求我下载的空白文件 lighttpd conf server modules mod access mod alias mod access
  • python:查找围绕某个 GPS 位置的圆的 GPS 坐标的优雅方法

    我有一组以十进制表示的 GPS 坐标 并且我正在寻找一种方法来查找每个位置周围半径可变的圆中的坐标 这是一个例子 http green and energy com downloads test circle html我需要什么 这是一个圆
  • 元组有什么用?

    我现在正在学习 Python 课程 我们刚刚介绍了元组作为数据类型之一 我阅读了它的维基百科页面 但是 我无法弄清楚这种数据类型在实践中会有什么用处 我可以提供一些需要一组不可变数字的示例吗 也许是在 Python 中 这与列表有何不同 每
  • 在 django ORM 中查询时如何将 char 转换为整数?

    最近开始使用 Django ORM 我想执行这个查询 select student id from students where student id like 97318 order by CAST student id as UNSIG
  • Python 中的哈希映射

    我想用Python实现HashMap 我想请求用户输入 根据他的输入 我从 HashMap 中检索一些信息 如果用户输入HashMap的某个键 我想检索相应的值 如何在 Python 中实现此功能 HashMap
  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另
  • 将 python2.7 与 Emacs 24.3 和 python-mode.el 一起使用

    我是 Emacs 新手 我正在尝试设置我的 python 环境 到目前为止 我已经了解到在 python 缓冲区中使用 python mode el C c C c将当前缓冲区的内容加载到交互式 python shell 中 显然使用了什么
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

    我想检查一下表的字段是否TestProject包含了Client端传入的参数 嵌套for循环很丑陋 有什么高效简单的方法来实现吗 非常感谢您的任何建议 def test parameter a list parameter b list g
  • 如何将张量流模型部署到azure ml工作台

    我在用Azure ML Workbench执行二元分类 到目前为止 一切正常 我有很好的准确性 我想将模型部署为用于推理的 Web 服务 我真的不知道从哪里开始 azure 提供了这个doc https learn microsoft co
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • 如何使用 Mysql Python 连接器检索二进制数据?

    如果我在 MySQL 中创建一个包含二进制数据的简单表 CREATE TABLE foo bar binary 4 INSERT INTO foo bar VALUES UNHEX de12 然后尝试使用 MySQL Connector P
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • 在 Sphinx 文档中*仅*显示文档字符串?

    Sphinx有一个功能叫做automethod从方法的文档字符串中提取文档并将其嵌入到文档中 但它不仅嵌入了文档字符串 还嵌入了方法签名 名称 参数 我如何嵌入only文档字符串 不包括方法签名 ref http www sphinx do
  • 如何在 Windows 命令行中使用参数运行 Python 脚本

    这是我的蟒蛇hello py script def hello a b print hello and that s your sum sum a b print sum import sys if name main hello sys
  • 在本地网络上运行 Bokeh 服务器

    我有一个简单的 Bokeh 应用程序 名为app py如下 contents of app py from bokeh client import push session from bokeh embed import server do
  • 将 Python 中的日期与日期时间进行比较

    所以我有一个日期列表 datetime date 2013 7 9 datetime date 2013 7 12 datetime date 2013 7 15 datetime date 2013 7 18 datetime date
  • Django-tables2 列总计

    我正在尝试使用此总结列中的所有值文档 https github com bradleyayers django tables2 blob master docs pages column headers and footers rst 但页
  • 在 JavaScript 函数的 Django 模板中转义字符串参数

    我有一个 JavaScript 函数 它返回一组对象 return Func id name 例如 我在传递包含引号的字符串时遇到问题 Dr Seuss ABC BOOk 是无效语法 I tried name safe 但无济于事 有什么解
  • cv2.VideoWriter:请求一个元组作为 Size 参数,然后拒绝它

    我正在使用 OpenCV 4 0 和 Python 3 7 创建延时视频 构造 VideoWriter 对象时 文档表示 Size 参数应该是一个元组 当我给它一个元组时 它拒绝它 当我尝试用其他东西替换它时 它不会接受它 因为它说参数不是

随机推荐

  • PCB表面处理方式详解

    上一篇文章中介绍了关于PCB设计中的常用基本概念 那么本篇文章就挑选其中的第三点 表面处理 给大家展开说一说 顺便也自我温习一下 什么是表面处理 由于铜长期与空气接触会使得铜氧化 所以我们需要在PCB表面做一些处理 这样才可以保证PCB板的
  • JQuery Dialog(JS模态窗口,可拖拽的DIV)

    代码分析地址 http jingyan baidu com album fb48e8be5347156e622e14ac html 或者http jingyan baidu com article fb48e8be5347156e622e1
  • 升级log4j2遇到的那些坑

    升级log4j2遇到的那些坑
  • 数据分析与挖掘之一:流程

    概念 数据分析 Data Analysis 是以数据为分析对象 以探索数据内的有用信息为主要途径 以解决业务需求为最终目标 包含业务理 解 数据采集 数据清洗 数据探索 数据可视化 数据建模 模型结果可视化 分析结果的业务应用等步骤在内的一
  • vue中读取对象中对象的属性无法读取报错

    问题描述 报错内容 Vue warn Error in render TypeError Cannot read properties of undefined reading cnName 在写博客系统的时候 在文章详情页 需要获取文章中
  • 杂谈随感-6:敢问路在何方?

    不识庐山真面目 只缘生在此山中 人员远虑 必有近忧 敢问路在何方 4G还是5G 是 钻地道 还是 云中飘 3G 已死 没有出路 4G 行将入木 死路一条 5G Hub不死不活 僵尸 RRU与BBU 一个钻地道 一个云中飘 渐行渐远 各走各路
  • 常用Dos命令

    1 dos命令 color all 修改背景字体颜色 cls 清屏 dir 查看当前目录有哪些文件 a 查看隐藏文件 a d 只查看目录不显示文档 r 只读文件 A 准备存档的文件 在内存中写了但是没网硬盘里面写 S 系统文件 c 显示文内
  • Caffe 工程的一些编译错误以及解决方案

    CAFFE深度学习交流群 532629018 整理一下最近遇到caffe工程的一些编译错误以及解决方法 1 cuDNN cuDNN当前最新版本是v5 近两三年的一些caffe工程 使用的版本不尽相同 其中以v2 v3版本的最为常见 所以使用
  • UCenter安装时提示mysql_connect()不支持

    问题描述 安装时 提示mysql connect 不支持 请检查 mysql 模块是否正确加载 如下图 分析原因 查看php官方帮助文档得知 mysql connect是php4有php5中的函数 在php5 5 0已标记为废弃 在php7
  • python-numpy一些方法总结

    1 multiply 例子 x1 1 2 3 x2 4 5 6 print multiply x1 x2 输出 4 10 18 multiply函数得到的结果是对应位置上面的元素进行相乘 2 std 标准方差 var 方差 例子 b 1 3
  • C++继承时派生类与基类有同名函数时如何分别引用

    一 普通函数同名 当某个函数func 在基类和派生类中都有定义时 派生类中的函数func 将修改从基类继承来的函数func 如果非要从派生类中访问基类的函数func 有两种方法 定义基类指针 让基类指针指向派生类对象 则调用的是基类func
  • ns2报错

    若报以下错误 finish couldn t execute nam no such file or directory 最简单的解决方法是在命令行中到你的ns安装目录下 进入nam目录 输入 sudo make install
  • k8s部署SpringBoot项目

    一 前言 本文将介绍如何通过CICD将SpringBoot框架的Web项目发布到k8s集群中 文章中有使用到eureka的注册 如果对如何在k8s集群中部署eureka 那么可以参考本人的 k8s部署eureka集群 文章 如果只是为了测试
  • java常见笔试题目

    1 下列那一行代码编译后不会出现警告或错误 1 char c a 2 byte b 257 3 boolean b null 4 int i 10 5 float f 1 3 2 下面这段代码编译时会发生什么情况 public class
  • 基于光栅波导结构的 R AR&MR 系统的 建模

    增强现实和混合现实 AR MR 作为全新的头戴式显示概念 作为 5G 时代的一个核心应用 具有巨大的市场需求和潜力 其中一种典型的 AR MR 设备是基于光栅波导结构 而正是因为 光学光栅这种微纳元件的使用 我们不能简单地使用基于几何光学的
  • 无线充电技术

    在過去的百年之中 作為電器與插座之間的連線 電線已經成了一種習慣且不可或缺的存在 儘管無線充電技術在實驗室中已存在多年 卻始終因為需求不高而無法量產 不過 這一切將在不久的未來改變 一場以無線充電為主角的科技革命 正以近年來被廣泛使用的各種
  • 很漂亮的按钮css样式(没有用到图片,可直接拷贝代码使用)

    对于程序员 有时候也需要对页面风格做些改动 整体的页面风格还是美工的工作 按钮其实是程序员很常用的 如果美工没有设计好 那就自己设计吧 在网上发现有乐于奉献的人共享了代码 效果很好 而且没有使用到图片 这个很重要 如果你使用别人的css 里
  • 智能家居解决方案及企划书

    一 背景 随着科技的不断发展 智能家居已经成为了一种趋势 越来越多的人开始追求智能化 便捷化 舒适化的生活方式 智能家居市场也因此迅速崛起 本企划书旨在为智能家居市场提供一套完整的解决方案 帮助企业在竞争激烈的市场中占据一席之地 二 市场分
  • verilog设计——SPI

    spi master timescale 1ns 1ps module spi master parameter CLK FREQUENCE 50 000 000 system clk frequence SPI FREQUENCE 5 0
  • 【简单代码】Python 海龟画图简单实现任何图象落在窗口中心处(五角星为例)

    话不多说直接上代码 import turtle import math def go centre zuobiao 此函数实现初始笔点左上移 因为本代码五角星是顺时针画 即在右下角 hang list lie list for hang l