作业有帮助吗?用于制作呼吸描记器

问题描述 投票:0回答:2

所以在休息周,我们的老师给了我们一个需要螺旋记录仪的小项目,这是他之前帮助我们编写的代码

from graphics import *
from math import *

def ar(a):
    return a*3.141592654/180

def main():
    x0 = 100
    y0 = 100
    startangle = 60
    stepangle = 120
    radius = 50

    win = GraphWin()

    p1 = Point(x0 + radius * cos(ar(startangle)), y0 + radius * sin(ar(startangle)))

    for i in range(stepangle+startangle,360+stepangle+startangle,stepangle):
        p2 = Point(x0 + radius * cos(ar(i)), y0 + radius * sin(ar(i)))
        Line(p1,p2).draw(win)
        p1 = p2

    input("<ENTER> to quit...")
    win.close()

main()

然后他希望我们开发一个程序,连续绘制 12 个等边三角形(每次将三角形旋转 30 度,穿过一个完整的 360 度圆)。 这可以通过“步进”STARTANGLE 参数来实现。我的问题是我被困在从这里到哪里去,他所说的“迈出”是什么意思?我假设做了某种循环,是否有人可以在正确的步骤中推动我?

python
2个回答
1
投票

这是使用 matplotlib 的解决方案。一般程序是相同的。但是您必须修改它才能使用您被允许使用的库。

from math import radians, sin, cos 
import matplotlib.pyplot as plt

startAngle = 0 
stepAngle = 30
origin = (0,0)

points = []
points.append(origin)
points.append((cos(radians(startAngle)), sin(radians(startAngle))))

for i in range(startAngle + stepAngle, 360 + stepAngle, stepAngle):
    x = cos(radians(i))
    y = sin(radians(i))
    points.append((x,y))
    points.append(origin)
    points.append((x,y))

x,y = zip(*points) #separate the tupples into x and y coordinates. 

plt.plot(x,y) #plots the points, drawing lines between each point
plt.show()

plt.plot
在列表中的每个点之间绘制线条。我们添加了原点,这样我们就得到了三角形,而不仅仅是围绕中心的多边形。 enter image description here


0
投票

像这样?我希望他指的是 12 分。 我添加了一个从 0 到 360 x 30 的步长。但是它只是从不同的点绘制相同的 3 个三角形。

from graphics import *
from math import *

def ar(a):
    return a*3.141592654/180

def main():
    x0 = 100
    y0 = 100
    stepangle = 120
    radius = 50

    win = GraphWin()
    for startangle in range(0,360,30):
        p1 = Point(x0 + radius * cos(ar(startangle)), y0 + radius * sin(ar(startangle)))

        for i in range(stepangle+startangle,360+stepangle+startangle,stepangle):
            p2 = Point(x0 + radius * cos(ar(i)), y0 + radius * sin(ar(i)))
            Line(p1,p2).draw(win)
            p1 = p2

    input("<ENTER> to quit...")
    win.close()

main()

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.