python海龟画斜着的椭圆.py

python海龟画斜着的椭圆.py

python turtle画斜椭圆图

python turtle画斜椭圆图

"""
   python海龟画斜着的椭圆.py
"""
import math
from turtle import *

def draw_oval2(a,b=None,width=5,fill=''):
        """以海龟为中心点画椭圆,这个方法会根据角色的方向对椭圆进行倾斜,所以速度慢
            a:长半轴,b:短半轴,
            width:边框像素值 
            fill:填充颜色,如果为空字符串,则无颜色            
        """
        if b == None : b = a
        
        cx,cy = tom.pos()                 # 中心点坐标
        cors = []                          # 多边形坐标点
        k = math.radians(tom.heading())   # 椭圆的倾斜角度
        for t in range(361):
          j= math.radians(t) 
          x = cx + a*math.cos(j)*math.cos(k)-b*math.sin(j)*math.sin(k) 
          y = cy + a*math.cos(j)*math.sin(k)+b*math.sin(j)*math.cos(k)
          cors.append(x)
          cors.append(-y)
        item = screen.cv.create_polygon(cors, fill=fill,width=width,outline='black')
       
def draw_oval(a,b=None,width=5,fill=''):
    """ 以海龟为中心点画椭圆,这个方法不会根据角色的方向对椭圆进行倾斜,所以速度快.
        a:长半轴,b:短半轴,
        width:边框像素值 
        fill:填充颜色,
        outline:边框颜色        
    """
    if b == None : b = a
    x,y = tom.pos()
    x0,y0 = x-a,-y-b
    x1,y1 = x+a,b-y
    item = screen.cv.create_oval(x0,y0,x1,y1,fill=fill,width=width)
   
tom = Turtle()
screen = tom.getscreen()
tom.pensize(10)
tom.left(45)
draw_oval2(100,50)
screen.mainloop()

李兴球

李兴球的博客是Python创意编程原创博客