鱼C论坛

 找回密码
 立即注册
查看: 3978|回复: 5

[作品展示] 【Python】数学函数图像

[复制链接]
发表于 2022-1-26 16:13:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 ckblt 于 2022-4-10 14:38 编辑

今天我做了个 Python 的数学函数图像,
用 turtle 模块来展示。

你可以在“y = m.tan(x)  # 你的函数!”的地方把 y 改一改,
可以呈现出各种各样的函数图像!

感谢 Minecraft程序猿 提出的建议!

注:显示出来的函数图像仅供参考!
import turtle as t
import math as m
from typing import Union


precision = 0.02  # 图像精度
dcm_precision = 5  # 小数精度
size = 20  # 数值大小
zoom = 50  # 缩放大小
show_guides = True  # 是否显示参考线

# 感谢 Minecraft程序猿 大佬提出的建议!
t.speed(0)
t.delay(0)
t.tracer(100)

if show_guides:
    # 绘制 x 坐标
    t.pu()
    t.goto(-size / 2 * zoom, 0)
    t.pd()

    for i in range(size):
        t.color("#000")
        t.fd(zoom)
        t.color("#ddd")
        t.seth(90)
        t.fd(zoom / 2 * size)
        t.bk(zoom * size)
        t.fd(zoom / 2 * size)
        t.seth(0)

    # 绘制 y 坐标
    t.pu()
    t.goto(0, -size / 2 * zoom)
    t.pd()
    t.seth(90)

    for i in range(size):
        t.color("#000")
        t.fd(zoom)
        if t.pos()[1] != 0:
            t.color("#ddd")
            t.seth(0)
            t.fd(zoom / 2 * size)
            t.bk(zoom * size)
            t.fd(zoom / 2 * size)
            t.seth(90)

    # 在 (0, 0) 画个红点
    t.pu()
    t.home()
    t.dot(5, "#f00")


t.pu()
t.color("#00f")

for i in range(round(size / precision)):
    x = round(i * precision - size / 2, dcm_precision)
    y = 0
    try:
        y = m.tan(x)  # 你的函数!
        y = round(y, dcm_precision)
    except ZeroDivisionError:
        t.pu()
        continue
    except ValueError:
        t.pu()
        continue
    except TypeError:
        t.pu()
        continue
    except OverflowError:
        t.pu()
        continue

    if isinstance(y, Union[float, int]) and i != 1 and -size < y < size:
        # print(str(x) + "\t" + str(y))
        t.goto(round(x * zoom), round(y * zoom))
        t.pd()
    else:
        t.pu()


t.ht()
t.done()

有问题的话可以来回复我哦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-27 11:31:53 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-27 18:16:33 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-8 18:23:05 | 显示全部楼层
我也做过这种...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-10 11:44:07 From FishC Mobile | 显示全部楼层
其实速度speed应该设为0,然后delay也可以调一下,0即可,最重要的是tracer(控制刷新率什么的),这个有2个参数,其中一个可以设得高一点,这样会快些

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
ckblt + 2 + 2 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-11-3 14:53:48 | 显示全部楼层
我直接复制代码怎么也是不能运行?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 19:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表