我需要一段简单的代码,它采用两个坐标(屏幕的中心,比如说(450,450)
和光标的位置),并通过这两个点绘制一条线到屏幕的边缘。我知道你可以用pygame.mouse.get_pos()
找到鼠标的位置;这只是我挣扎的数学部分。
答案 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.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())
已定义suface
,color
,sizeScreenX
和sizeScreenY
,符合您的需求。
答案 2 :(得分:0)
你有两个点P0和P1。它们以参数方式定义线:
X = P0.X + t * (P1.X - P0.X)
Y = P0.Y + t * (P1.Y - P0.Y)
当X到达屏幕边框时找到参数t - X=0
或X=width
,当Y到达屏幕边框时 - Y=0
或Y=height
并计算边缘处的点数