上个文章我们分享了一些用turtle画基础图形的代码,但是漏掉了圆角矩形,在这里补上,并做一些拓展。
圆角矩形也就是在矩形的四个角里加上圆弧。
矩形很简单,给定长和宽两个参数,然后用个小循环,每次画直线后左转90度,就可以了。
import turtle
t=turtle.Turtle()
def f(x=100,y=200)
for _ in range(2):
t.forward(x)
t.left(90)
t.forward(y)
t.left(90)
f()
turtle.done()
要画圆角矩形,就把左转90度,换成画四分之一圆弧就行。半径就决定了圆弧的大小。这里也设置一个参数r。这样最简单的圆角矩形就画好了。
import turtle
t=turtle.Turtle()
def f(x=100,y=200,r=40)
for _ in range(2):
t.forward(x)
t.circle(r,90)
t.forward(y)
t.circle(r,90)
f()
turtle.done()
半径r越大,圆弧就越大。
当然这样画出来的矩形长宽是比x,y要大了的,可以在画直线时减掉半径r*2。
画其他图形要做圆角的话也类似,在画完直线后转弯时改成画圆弧就行。 比如正多边形。
还记得怎么画正多边形吗?之前我们用内角和来画,但任意多边形的外角和都为360度,所以用外角会更简单,正n边形就是:
import turtle
t=turtle.Turtle()
def f(n=5)
for _ in range(n):
t.forward(a)
t.left(360/n)
f()
turtle.done()
同样的,要改成圆角的话,把转动角度,改成画圆弧就行。这样最简单的圆角正多边形就画好了。
import turtle
t=turtle.Turtle()
def f(n=5,r=40)
for _ in range(n):
t.forward(a)
t. circle (r,360/n)
f()
turtle.done()
我们再扩展一下,画旋转对称的图形,把边长x变成一个元组,外面嵌套一个循环,循环两次,里面循环直接遍历x元组,每次转动角度也要除以2。
这样x元组如果有两个元素,那就是画长方形,还可以增加元组的元素个数看下多个元素画旋转对称图形的效果。
import turtle
t = turtle.Turtle()
def f(x=(50,100),r=20):
n=len(x)
for _ in range(2):
for i in x:
t.forward(i)
t.circle(r,360/n/2)
f()
turtle.done()
如果圆角要往里面凹呢?这样需要在画圆弧前后都转一个角度,然后半径给个负号,顺时针画圆弧。
import turtle
t = turtle.Turtle()
def f(x=(50,100),r=20):
n=len(x)
for _ in range(2):
for i in x:
t.forward(i)
t.left(360/n/2)
t.circle(-r,360/n/2)
t.left(360/n/2)
f()
turtle.done()
当然,在实际编写代码时,循环里面的这个计算,应该拉到循环外面,免得每次循环都要计算哦,这里放循环里面只是为了方便大家理解。
好了,今天的介绍就到这里。自己动手试下吧。