从屏幕中心通过鼠标光标到屏幕边缘画线

时间:2017-03-26 14:26:37

标签: python math pygame coordinates

我需要一段简单的代码,它采用两个坐标(屏幕的中心,比如说(450,450)和光标的位置),并通过这两个点绘制一条线到屏幕的边缘。我知道你可以用pygame.mouse.get_pos()找到鼠标的位置;这只是我挣扎的数学部分。

3 个答案:

答案 0 :(得分:1)

给这个旋转:

# calculate angle in radians between center and mouse
angle = math.atan2(center.y - mouse.y, center.x - mouse.x)

# adjust to screen edge
edge_point.x = center.x + (SCREEN_WIDTH / 2) * math.cos(angle)
edge_point.y = center.y + (SCREEN_WIDTH / 2) * math.sin(angle)

# draw line
pygame.draw.line(surface,color, center, edge_point, width)

您还可以增加SCREEN_WIDTH以略微超出屏幕边缘。此外,假设SCREEN_WIDTH是宽度和高度的较长者。如果高度较长,请选择高度。基本上你只需要一个超出屏幕边缘的值。

根据设置,可以将线条镜像到鼠标所在的位置。切换角度计算为:

angle = math.atan2(mouse.y - center.y, mouse.x - center.x)

答案 1 :(得分:0)

来自Pygame's documentation

  

pygame.mouse.get_pos()

     

获取鼠标光标位置

     

get_pos() -> (x, y)

     

返回鼠标光标的X和Y位置。这个职位是   相对于显示屏的左上角。光标位置   可以位于显示窗口之外,但始终是   限制在屏幕上。

如您所见pygame.mouse.get_pos()输出一个元组(x,y)

因此,您可以将pygame.mouse.get_pos()[0]用于x组件,将pygame.mouse.get_pos()[1]用于y组件。

编辑:

使用pygame.draw.line()

其文件:

  

pygame.draw.line()

     

绘制直线段

     

line(Surface, color, start_pos, end_pos, width=1) -> Rect

     

在Surface上绘制直线段。没有端盖,   对于粗线,两端都是方形的。

所以你可以这样做:

pygame.draw.line(surface,color,(sizeScreenX/2,sizeScreenY/2),pygame.mouse.get_pos())

已定义sufacecolorsizeScreenXsizeScreenY,符合您的需求。

答案 2 :(得分:0)

你有两个点P0和P1。它们以参数方式定义线:

 X = P0.X + t * (P1.X - P0.X)
 Y = P0.Y + t * (P1.Y - P0.Y)

当X到达屏幕边框时找到参数t - X=0X=width,当Y到达屏幕边框时 - Y=0Y=height并计算边缘处的点数