提问人:Ygor Montenegro 提问时间:11/13/2023 最后编辑:Rabbid76Ygor Montenegro 更新时间:11/13/2023 访问量:45
PyGame - 基于航向画线
PyGame - Draw Line Based on Heading
问:
我用来在两个坐标之间画一条线(以像素为单位),这个函数所需的格式是。pygame.draw.line
(begin_x,begin_y),(end_x, end_y)
此线的起始坐标可以是 (0,0),并且该线的整个长度必须为 100px。但是,如果起点和终点之间的标题是 060º,那么这条线的结束坐标将是哪个?
这条线是飞机在屏幕上的结果向量。
例如。如果飞机航向为 090º,则结束坐标为 (0,100),如果为 0º,则为 (-100, 0),依此类推。
# Tried this but it's not working
ending_x = begin_x + math.cos(heading) * length
ending_y = begin_y + math.sin(heading) * length
答:
1赞
psysrc
11/13/2023
#1
我建议学习三角学的基础知识才能开始,例如 https://www.mathsisfun.com/algebra/trigonometry.html。
在这里,我画了一个包含两个点的图表,以及 . 是中心/起点,是您尝试计算的坐标。这些点之间的距离被标记为 。我还绘制了表示点和 之间的标题的角度。A
B
A
B
L
a
A
B
通过使用此图并应用基本的三角函数,您可以得出便签中的方程。点 和 之间的垂直差,可由下式计算。同样,点之间的水平差可以用 计算。A
B
h
L * sin(a)
w
L * cos(a)
要小心,因为根据角度的不同,坐标很可能不会是整数值,因此您可能需要进行一些舍入或近似。a
0赞
Ygor Montenegro
11/13/2023
#2
# Now Works
ending_x = begin_x + math.cos(math.radians(heading)) * length
ending_y = begin_y + math.sin(math.radians(heading)) * length
忘了变换弧度。
上一个:如何从曲线中获取贝塞尔点
评论