所以在休息周,我们的老师给了我们一个需要螺旋记录仪的小项目,这是他之前帮助我们编写的代码
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
在列表中的每个点之间绘制线条。我们添加了原点,这样我们就得到了三角形,而不仅仅是围绕中心的多边形。
像这样?我希望他指的是 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()