代码之家  ›  专栏  ›  技术社区  ›  Nicholas Roberts

python中的缩放功能?(2.7.9)

  •  1
  • Nicholas Roberts  · 技术社区  · 11 年前

    我目前正在使用python的海龟库。

    我正在为我的编码课做期中项目,我的项目是使用乌龟及其逆函数绘制cos、sin和正切曲线。

    我的问题是,当我编码反正弦时,图形显示得太小,用户无法看到。我想知道是否有缩放功能或拉伸图形以使其更大的方法?

    这是我的代码 arcsin :

    def drawarcsincurve(amplitude, period, horShift, verShift):
        turtle.speed(0)
        startPoint = -1 
        turtle.goto(startPoint, math.asin(startPoint))
        turtle.pendown()
        for angles in range(-1,1):
            y = math.asin(angles)
            turtle.goto(angles,y)
    
    1 回复  |  直到 11 年前
        1
  •  1
  •   J Richard Snape    11 年前

    我认为,你在这里的主要问题是你的迭代范围 angles 变量线路

    for angles in range(-1,1):
    

    将只执行两次循环 angle == 1 angle == 0 -即相当于使用

    for angles in [-1,0]:
    

    类型 range(-1,1) 在Python解释器窗口中查看我的意思。

    你可能也会对名字感到困惑。调用循环变量 ,但它实际上表示的是一个比率(您正在计算其倒数的正弦值)。

    您可能真正想要的是在范围内迭代的东西 -1 1 在相当小的步骤中。让我们选择 0.01 作为我们的步骤(这是任意的)

    我直接修改了你的代码,而不是自己实现。

    1. 我输入了一个比例因子( plot_scale )这相当于我认为你在原始问题中想要的缩放。
    2. 我保留了原始的函数参数,尽管我没有使用它们。我想你以后可能想和他们一起玩。

    def drawarcsincurve(amplitude, period, horShift, verShift):
        plot_scale = 100 # Arbitrary value - up to you - similar to "zoom"
        turtle.speed(1)
        turtle.penup() 
        startPoint = -1 
        turtle.goto(plot_scale*startPoint, plot_scale*math.asin(startPoint))
        turtle.pendown()
        for angles in range(-100,100):
            sinval = 1.0 * angles / 100 # this will run -1 to 1 in 0.01 steps
            y = math.asin(sinval)
            turtle.goto(plot_scale*sinval,plot_scale*y)
    

    这将输出:

    Plot of arcsin curve on Python Tk graphics