Python turtle 绘制抛物线

Python turtle 绘制抛物线

Python turtle 库未提供画抛物线的函数,但可通过解析函数( y 2 = 2 p x y^2=2px y2=2px x 2 = 2 p y x^2=2py x2=2py)描点连线实现抛物线的绘制。所计算的点越多,图像就越接近抛物线。

具体实现

# 海龟绘图绘制抛物线
# author: 小喾苦
# date: 2022-5-14
# author's github: https://github.com/xkk1
# author's bilibili: https://space.bilibili.com/513689605
import turtle


if "turtle" not in locals().keys():
    turtle = None

def parabola_x(begin, end, step=10, endstart=False, t=turtle):
    """
    绘制开口朝向x轴(左右开口)的抛物线 y²=2px 的一半
    parabola_x(begin, end, step=10, endstart=False, t=turtle)
        begin 开始坐标、抛物线的顶点(x₁,y₁)
        end 结束坐标(x₂,y₂)
        step 精度,为一个整数,数越小精度越高速度越慢
        endstart 是否从结束坐标开始绘制(True是\False否)
        t turtle库的名称
    """
    p = ( (end[1]-begin[1])**2/abs(end[0]-begin[0]) )/2 # 计算抛物线p的大小
    if end[0]-begin[0] < 0: # 确定抛物线p的正负号
        p = -p
    if begin[1] > end[1]: # 确定精度的正负号
        step = -step
    t.pu() # 抬笔
    if endstart == True: # 如果从结束坐标开始绘制
        t.goto(end[0], end[1]) # 前往结束坐标
        start = end[1]+1
        stop = begin[1]
        step = -step
    else:
        start = begin[1]
        stop = end[1]+1
        t.goto(begin[0], begin[1]) # 前往初始坐标
    t.pd() # 放笔
    for y in range(start ,stop ,step): # 相当于画函数图像的列表
        x = ((y-begin[1])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值