关于python 画图的问题,我有一串码完全看不懂,麻烦大家帮我看一下。

import turtle

def drawTriangle(points,color,myTurtle):
myTurtle.fillcolor(color)
myTurtle.up()
myTurtle.goto(points[0][0],points[0][1])
myTurtle.down()
myTurtle.begin_fill()
myTurtle.goto(points[1][0],points[1][1])
myTurtle.goto(points[2][0],points[2][1])
myTurtle.goto(points[0][0],points[0][1])
myTurtle.end_fill()

def getMid(p1,p2):
return ( (p1[0]+p2[0]) / 2, (p1[1] + p2[1]) / 2)

def sierpinski(points,degree,myTurtle):
colormap = ['blue','red','green','white','yellow',
'violet','orange']
drawTriangle(points,colormap[degree],myTurtle)
if degree > 0:
sierpinski([points[0],
getMid(points[0], points[1]),
getMid(points[0], points[2])],
degree-1, myTurtle)
sierpinski([points[1],
getMid(points[0], points[1]),
getMid(points[1], points[2])],
degree-1, myTurtle)
sierpinski([points[2],
getMid(points[2], points[1]),
getMid(points[0], points[2])],
degree-1, myTurtle)

def main():
myTurtle = turtle.Turtle()
myWin = turtle.Screen()
myPoints = [[-100,-50],[0,100],[100,-50]]
sierpinski(myPoints,3,myTurtle)
myWin.exitonclick()

main()
。。。。。。。。。。。。。

我想把这个三角形倒过来
并且尺寸扩大2倍怎么改。
还有还有
myTurtle.up() 和myTurtle.down()是啥意思啊,看不懂
if degree > 0也不懂

myPoints = [[-100,-50],[0,100],[100,-50]]这是啥我也不懂
sierpinski这个方法是做什么的也不懂啊

首先,确定三角形的位置需要三个点。代码里给出的myPoints = [[-100,-50],[0,100],[100,-50]]就是这三个点的位置,你可以在坐标轴里画一个x,y轴,找一下就知道了。如果只是想让三角形倒过来,就重新给它三个点[[-100,100],[100,100],[0,-50]]。

其次,三角形的边长,就是两个点之间的直线距离。从代码里可以看到,(-100,-50),(100,-50)这两个点是在同一条横向的线上,它们的距离是200.所以想把三角形的尺寸扩大两倍,就需要把边长扩大,给出新的点[[-200,200],[200,200],[0,-100]]

综上,修改main函数中的myPoints,即可达到你的需求:倒置三角形,尺寸扩大两倍
def main():
myTurtle = turtle.Turtle()
myWin = turtle.Screen()
myPoints = [[-200,200],[200,200],[0,-100]]
sierpinski(myPoints,3,myTurtle)
myWin.exitonclick()

再解释几个问题:
myTurtle.up() 和myTurtle.down()

可以把myTurtle看做是画笔,myTurtle.up()就表示把画笔从画布上抬起,也就是不跟画布接触。myTurtle.down()也就可以看成是画笔跟画布接触。

sierpinski是定义的一个递归画三角形的方法,degree可以理解成递归的深度,也就是说在一个三角形内可以再画几个小三角形(不包括中间的三角形)。代码里degree 是3,你可以运行一下代码,看看效果。

希望能帮到你,有疑问请追问!
温馨提示:答案为网友推荐,仅供参考
相似回答