python - python 中的缩放功能? (2.7.9)

标签 python turtle-graphics trigonometry

我目前正在使用Python的turtle库。

我正在为我的编码类(class)做期中项目,我的项目是使用 turtle 及其反函数绘制余弦、正弦和正切曲线。

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

这是我的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)

最佳答案

我认为,您的主要问题是迭代 angles 变量的范围。线路

for angles in range(-1,1):

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

for angles in [-1,0]:

在 Python 解释器窗口中输入 range(-1,1) 以了解我的意思。

您可能也会对名称感到困惑。您将循环变量称为“angles”,但它实际上表示一个比率(您正在计算其倒数的正弦值)。

您可能真正想要的是以相当小的步长在 -11 范围内迭代的东西。让我们选择 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

关于python - python 中的缩放功能? (2.7.9),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29062142/

相关文章:

c - 快速准确的atan/arctan近似算法

algorithm - 获取角度当前象限的最快方法

python - 如何使用 web.py 动态填充表单中的选择框/下拉框?

python - 使用Python将多阶段作业的HIVE刷新错误转换为stderr

python - 确保只有一组特定的字符在字符串中

python - turtle : timer keeps blinking

python - 在 Pyside 中,为什么在处理信号后发出大于 0x7FFFFFFF 的整数会导致 "OverflowError"?

python - 如何修复 "Exception in tkinter callback": "unsupported operand type(s)" in Python

python - 命令 onkey() 出错

processing - 使用 Processing 创建正弦波线