我需要通过三个点在pygame中画一个弧,但是pygame的弧函数似乎不支持这个。我已经研究了三个弧点,无论是在pygame中还是在pygame之外,但找不到任何我理解且有用的东西。
我理想情况下会喜欢完整的代码,但任何提示都会很有用
宾
答案 0 :(得分:2)
以下是一些提示,需要一些小数学才能完成。如果您需要更多帮助,请展示更多作品并提出要求。
假设您要绘制从点a=(ax, ay)
到点b=(bx, by)
到点c=(cx, cy)
的圆弧。您想使用该功能
pygame.draw.arc(Surface, color, Rect, start_angle, stop_angle, width=1)
所以你需要找到Rect
,圆的边界矩形(它将是一个正方形),以及起始和终止角度。这是一个大纲。
u=(ux, uy)
。如果该计算提出了除零或溢出错误,则这些点(几乎)在一条直线上,因此只需从点a
到点c
绘制一条线段,就可以完成。 u
到点a
(或b
或c
的距离,无所谓)。这将是所需圆的半径。u
和半径计算边界矩形Rect
的参数。矩形实际上是一个正方形,点u
将是它的中心。u
到点a
的方向角:这个(差不多)将是start_angle
。要小心,因为笛卡尔坐标增加y上升,而在pygame中增加y下降。同时计算从点u
到点c
的方向角:这个(几乎)将是stop_angle
。然后计算从点u
到点b
的方向角。b
。您现在拥有Rect
,start_angle
和stop_angle
。这个大纲忽略了一些微妙的问题,比如四舍五入到整数,但我会留给你。