Python 乌龟箭头未朝向正确的方向
Python turtle arrowheads not facing in correct direction
我正在尝试使用 Python 乌龟绘制箭头。但是当它到达箭头的头部时,我得到乌龟的航向并添加 45 度以绘制箭头的一半,然后回到相同的位置绘制另一部分。我设置了正确的角度,但后来一切都出错了:
初始化
StartPointX=0
StartPointY=0
MaxX=100
MaxY=100
绘制箭头线
Brush.goto(StartPointX,StartPointY)
Brush.goto(MaxX,MaxY)
绘制箭头
Brush.left(45)
Brush.backward(20)
Brush.forward(20)
Brush.right(90)
Brush.backward(20)
输出图像:
问题是您忽略了乌龟的航向。当您使用 goto()
时,乌龟的航向不变。当你写 left(45)
时,它相对于什么左转 45 度?当前标题左侧,尚未设置:
from turtle import Screen, Turtle
StartPointX = 0
StartPointY = 0
MaxX = 100
MaxY = 100
screen = Screen()
brush = Turtle()
# Drawing The arrow line
brush.penup()
brush.goto(StartPointX, StartPointY)
brush.pendown()
brush.setheading(brush.towards(MaxX, MaxY))
brush.goto(MaxX, MaxY)
# Drawing arrow head
brush.left(45)
brush.backward(20)
brush.forward(20)
brush.right(90)
brush.backward(20)
brush.hideturtle()
screen.exitonclick()
解决此问题的另一种方法:
MaxX = 100
MaxY = 100
# ...
brush.setheading(brush.towards(MaxX, MaxY))
brush.goto(MaxX, MaxY)
是控制标题用forward()
代替goto()
:
Distance = 140
# ...
brush.setheading(45)
brush.forward(Distance)
我正在尝试使用 Python 乌龟绘制箭头。但是当它到达箭头的头部时,我得到乌龟的航向并添加 45 度以绘制箭头的一半,然后回到相同的位置绘制另一部分。我设置了正确的角度,但后来一切都出错了:
初始化
StartPointX=0
StartPointY=0
MaxX=100
MaxY=100
绘制箭头线
Brush.goto(StartPointX,StartPointY)
Brush.goto(MaxX,MaxY)
绘制箭头
Brush.left(45)
Brush.backward(20)
Brush.forward(20)
Brush.right(90)
Brush.backward(20)
输出图像:
问题是您忽略了乌龟的航向。当您使用 goto()
时,乌龟的航向不变。当你写 left(45)
时,它相对于什么左转 45 度?当前标题左侧,尚未设置:
from turtle import Screen, Turtle
StartPointX = 0
StartPointY = 0
MaxX = 100
MaxY = 100
screen = Screen()
brush = Turtle()
# Drawing The arrow line
brush.penup()
brush.goto(StartPointX, StartPointY)
brush.pendown()
brush.setheading(brush.towards(MaxX, MaxY))
brush.goto(MaxX, MaxY)
# Drawing arrow head
brush.left(45)
brush.backward(20)
brush.forward(20)
brush.right(90)
brush.backward(20)
brush.hideturtle()
screen.exitonclick()
解决此问题的另一种方法:
MaxX = 100
MaxY = 100
# ...
brush.setheading(brush.towards(MaxX, MaxY))
brush.goto(MaxX, MaxY)
是控制标题用forward()
代替goto()
:
Distance = 140
# ...
brush.setheading(45)
brush.forward(Distance)