Python 如何在网格上的pygame中制作热图

Python 如何在网格上的pygame中制作热图,python,pygame,Python,Pygame,我已经在pygame上做了一个网格,我想知道你怎么做,从网格上的一个点开始,当你离那个点越来越远时,颜色会发生变化,例如,当距离一个正方形时,颜色会从深蓝色变为十个正方形时的浅蓝色。我真的不知道如何做到这一点,任何帮助都将是巨大的 网格是通过以下方式创建的: grid = [] for y in range(grid_size): row = [] for x in range(grid_size): row.append([x * (grid_width + g

我已经在pygame上做了一个网格,我想知道你怎么做,从网格上的一个点开始,当你离那个点越来越远时,颜色会发生变化,例如,当距离一个正方形时,颜色会从深蓝色变为十个正方形时的浅蓝色。我真的不知道如何做到这一点,任何帮助都将是巨大的

网格是通过以下方式创建的:

grid = []
for y in range(grid_size):
    row = []
    for x in range(grid_size):
        row.append([x * (grid_width + grid_margin) + distance_from_left, y * (grid_height + grid_margin) + distance_from_top, white])
    grid.append(row)
网格是使用以下方式绘制的:

for row in grid:
        for x, y, colour in row:
            pygame.draw.rect(screen, colour, (x, y, grid_width, grid_height))

我还有一个函数,可以计算出网格上每个节点的所有子节点(它周围的所有节点(上、下、侧面和对角),我觉得这可能有助于计算出与所选节点的距离。

颜色由3个颜色通道(reg、绿色、蓝色)组成。请参阅。在此上下文中,颜色只不过是范围为[0255]的3个值的元组

深蓝色是例如(0,0,63),浅蓝色是(127191255)

必须在这两个值之间插值。计算[0.0,1.0]范围内的一个因子,该因子表示颜色的色调。使用该因子插值颜色通道:

e、 g
f
是[0.0,1.0]中的一个因子

blue=63+192*f#根据f在63和255之间插值
到2点之间的距离可通过以下公式计算:

e、 g

pos=(x,y)
gx=(x+0.5)*网格尺寸
gy=(y+0.5)*网格尺寸
距离=pygame.math.Vector2(位置)。到((gx,gy))的距离
e、 g.在位置
pos
附近设置浅蓝色,远离位置设置深蓝色:

pos=#(x,y)位置
网格=[]
对于范围内的y(网格大小):
行=[]
对于范围内的x(网格大小):
gx=x*(网格宽度+网格边距)+距离左
gy=y*(格线高度+格线边距)+距格线顶部的距离
距离=pygame.math.Vector2(位置)。距离(gx+网格宽度/2,gy+网格高度/2))
maxLen=网格大小*(网格高度+网格裕度)
f=最大值(0,1-距离/最大值)
颜色=(127*f,191*f,63+192*f)
行追加([gx,gy,颜色])
grid.append(行)


上述解决方案假设
pos
是以像素为单位的窗口坐标

如果
pos
是一个“网格”坐标,这意味着
pos
识别网格中的一个位置,那么解决方案就更简单了:

pos=#(x,y)位置
网格=[]
对于范围内的y(网格大小):
行=[]
对于范围内的x(网格大小):
距离=pygame.math.Vector2(位置)。距离_到((x,y))
f=最大值(0,1-距离/网格大小)
颜色=(127*f,191*f,63+192*f)
gx=x*(网格宽度+网格边距)+距离左
gy=y*(格线高度+格线边距)+距格线顶部的距离
行追加([gx,gy,颜色])
grid.append(行)

您需要提供更多的代码。如何绘制网格?您可以使用线性插值来完成此操作,或者编写自己的函数,或者在pygame中找到一个函数来完成此操作。再次感谢您的帮助,Rabbi76i似乎无法更改颜色更改的起始位置-无论我输入了什么x和y值,它总是从左上角开始in@JJH562<代码>pos必须是一个窗口坐标(像素)。如果您想使用网格坐标,那么它必须是
距离=pygame.math.Vector2(pos)。距离(x,y)
f=max(0,1-距离/网格大小)
再次感谢,一如既往的帮助很大:)