python – 功课帮助?制作一个螺旋形

因此,在休息一周,我们的老师给了我们一个需要Spirograph的小项目,这是他之前帮我们写过的代码

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参数来实现.我的问题是我被困在这里从哪里开始,他的意思是“踩到什么?”我假设做了某种循环,是否有人可以给我一个正确的步骤?

解决方法

这是使用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在列表中的每个点之间绘制线条.我们将原点添加到inn中,因此我们得到三角形而不是围绕中心的多边形.

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...