1,将正弦函数,余弦函数及坐标轴绘制在同一个界面方便对比观察,不同函数的曲线变化
import turtle # 导入turtle图形库,用于绘图
import math # 导入math库,用于数学计算,如三角函数# 设置绘图窗口
screen = turtle.Screen()
screen.title('正弦余弦函数曲线') # 设置窗口标题
screen.bgcolor('#AFEEEE') # 设置窗口背景颜色为浅天蓝色# 创建一个turtle对象,用于绘图
p = turtle.Turtle()
p.pencolor('red') # 设置画笔颜色为红色# 定义绘制函数曲线的参数
x_start = -2*math.pi # x轴起始点,-2π
x_end = 2*math.pi # x轴结束点,2π
step = 0.01 # x轴上的步长
scale = 100 # 缩放比例,用于将x,y值转换为屏幕上的像素位置# 绘制余弦函数曲线
p.penup() # 提起画笔,移动时不绘制
# 移动到余弦函数在x_start处的起始点
p.goto(int(x_start*scale), math.cos(x_start)*scale)
p.pendown() # 放下画笔,开始绘制# 使用for循环绘制余弦曲线
for i in range(int(x_start*scale), int(x_end*scale)+1, int(step*scale)):value_x = i / scale # 将屏幕上的x坐标转换为实际的x值value_y = math.cos(value_x)*scale # 计算对应的y值p.goto(value_x*scale, value_y) # 移动到下一个点# 绘制余弦函数的负值曲线
p.penup()
p.goto(int(x_start*scale), -math.cos(x_start)*scale) # 移动到起始点
p.pendown()for i in range(int(x_start*scale), int(x_end*scale)+1, int(step*scale)):value_x = i / scalevalue_y = -math.cos(value_x)*scalep.goto(value_x*scale, value_y)
p.penup()# 绘制正弦函数曲线,设置画笔颜色为紫色
p.pencolor('#FF00FF')
p.goto(int(x_start*scale), math.sin(x_start)*scale) # 移动到起始点
p.pendown()for i in range(int(x_start*scale), int(x_end*scale)+1, int(step*scale)):value_x = i / scalevalue_y = math.sin(value_x)*scalep.goto(value_x*scale, value_y)
p.penup()# 绘制正弦函数的负值曲线
p.goto(int(x_start*scale), -math.sin(x_start)*scale)
p.pendown()for i in range(int(x_start*scale), int(x_end*scale)+1, int(step*scale)):value_x = i / scalevalue_y = -math.sin(value_x)*scalep.goto(value_x*scale, value_y)
p.penup()# 绘制坐标轴
p.pencolor('blue') # x轴为蓝色
p.goto(int(x_start*scale)-50, 0) # 移动到x轴起始点
p.pendown()for i in range(int(x_start*scale)-50, int(x_end*scale)+50, int(step*scale)):value_x = ip.goto(value_x, 0) # 绘制x轴
p.penup()p.pencolor('yellow') # y轴为黄色
p.goto(0, int(x_start*scale)/2-25) # 移动到y轴起始点,注意这里y轴的缩放比例做了调整以适应屏幕
p.pendown()for i in range(int(x_start*scale)-50, int(x_end*scale)+50, int(step*scale)):value_y = i/2 # 注意这里y轴的缩放比例做了调整以适应屏幕p.goto(0, value_y) # 绘制y轴
p.penup()# 隐藏turtle图标,完成绘图
p.hideturtle()
turtle.done()