Python 在窗口中创建坐标查找

Python 在窗口中创建坐标查找,python,pygame,mandelbrot,Python,Pygame,Mandelbrot,我正在与PyGame合作,并试图创建一个可缩放/可缩放的Mandelbrot集。我为正方形窗口和坐标设置了这个值,在复杂平面的两个轴上都是-1到1。我这样做的方式是针对屏幕上的每个像素,我称之为此函数: #导入pygame并初始化 xSize=50 ySize=50 比例=20 大小=宽度,高度=(xSize*比例),(ySize*比例) screen=pygame.display.set_模式(大小) def getCoords(x,y): complexX=(x/((xSize*scale)

我正在与PyGame合作,并试图创建一个可缩放/可缩放的Mandelbrot集。我为正方形窗口和坐标设置了这个值,在复杂平面的两个轴上都是-1到1。我这样做的方式是针对屏幕上的每个像素,我称之为此函数:

#导入pygame并初始化
xSize=50
ySize=50
比例=20
大小=宽度,高度=(xSize*比例),(ySize*比例)
screen=pygame.display.set_模式(大小)
def getCoords(x,y):
complexX=(x/((xSize*scale)/2))-1
complexY=(y/((ySize*scale)/2))-1
返回complexX,complexY
这是我实际绘制像素的循环:

范围内y的
(0,(ySize*比例)):
对于范围(0,(xSize*比例))内的x:
i=0
z=getCoords(x,y)
complexNum=complex(z[0],z[1])
佐尔德=0
blowsUp=False
#检查(z^2+c)是否“爆炸”
如果吹扫:
屏幕。设置_为((x,y),颜色1)
其他:
屏幕。设置_为((x,y),颜色为0)

基本上,我想做的是有两个元组(一个用于x,一个用于y),其中包含从复平面绘制的最大值和最小值(即,这里我只是在实轴和虚轴上绘制1到-1)。我想这可以通过编辑getCoords()函数来实现,但在对表达式进行了大量修改之后,我似乎找不到正确的方法来实现这一点。

我认为您的问题与
pygame
编程只有一点关系,实际上主要是一个数学问题

如果我已经理解了您试图正确执行的操作,那么它实际上相当于将0..scale的整数范围映射到x和y维度±1.0范围内的指定子范围。将其可视化为一个矩形区域或长方体中x和y坐标的变换,以便它们适合另一个矩形区域或长方体的边界

下面的代码显示了所涉及的数学的本质

(请注意,显示的代码(大部分)遵循,我强烈建议您阅读并开始遵循。)

打印结果:

0.17-0.0-0.0-0.0-0.16-0.0-0.0-0.16-0.0-0.0-0.0 0-0.15-0.0-0.20 J-0.15-0.20-0.0-0.15-0-0.0-0.15-0-0.20-0-0.20-0-0-0.15-0-0.20-0-0-0.20-0-0-0 0-0 0 0.20-0-0-0-0-0-0-0-0-0 0 0.0 0 0 0 0 0 0 0.15-0.20-0.20-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0.20 0.08-0.20j 0.09-0.20j 0.11-0.20j 0.12-0.20j 0.13-0.20j 0.15-0.20j 0.16-0.20j 0.17-0.20j0.19-0.20j 0.1-0.0-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0-0.1-0-0.1-0-0-0-0-0-0.15-0-0-0.1-0-0-0-0-0-0-0-0.1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0.19-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 0.19j 0.09-0.19j 0.11-0.19j 0.12-0.19j 0.13-0.19j 0.15-0.19j 0.16-0.19j 0.17-0.19j0.19-0.19j 1.17-0.17-0.17-0.17-0.17-0.17-0.17-0.17-0.17-0.17-0.17-0.7-0.7-0.7-0.7-0.7-0.7-0.7-0.7-0-0.7-0-0.7-0-0-0.7-0-0-0-0.7-0-0-0-0.7-0-0-0-0-0.7-0-7-0-0-0-0-0-0.7-0-0-0.7-0-0-0-0-0-0-0.7-0-0-0-7-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0.7-7-0-0-0-0-0-0-7-0-0-0-0-7-0-0-0 0.17j 0.09-0.17j 0.11-0.17j 0.12-0.17j 0.13-0.17j 0.15-0.17j 0.16-0.17j 0.17-0.17j0.19-0.17j 0.16-0.16-0.6-0.6-0.16-0.16-0.16-0.6-0.1-0.1-0.15-0.16j-0.15-0.1-0.1-0.1-0.1-0.1-0.1-0-0.1-0-0.1-0-0-0-0.15-0-0-0-0-0.15-0.16j-0-0-0-0-0-0-0.1-0-0-0-0-0-0.1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0.1-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 0.16j 0.09-0.16j 0.11-0.16j 0.12-0.16j 0.13-0.16j 0.15-0.16j 0.16-0.16j 0.17-0.16j0.19-0.16j 10.15-0.15-0.15-0.15-0.15-0.15-0.15-0.15-0.15-0.15-0.15-0.15-0.15-0.15-0.15-0.15-0-0.15-0-0.15-0-0.15-0-0-0.15-0-0-0.15-0-0-0.15-0-0-0-0.15-0-0-0.15-0-0-0-0-0-0.15-0-0-0-0-0-0-0.15-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0.15-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 0.15j 0.09-0.15j 0.11-0.15j 0.12-0.15j 0.13-0.15j 0.15-0.15j 0.16-0.15j 0.17-0.15j0.19-0.15j 10.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0-0.1-0-0.1-0-0-0-0.13-0-0-0-0.13-0-0-0.13-0-0-0-0-0-0.13-0-0-0-0-0-0.13-0-0-0-0-0-0-0.13-0-0-0-0-0-0-0.13-0-0-0-0-0-0-0-0-0.13-0-0-0-0-0-0-0-0-0-0.13-0-0-0-0-0-0-0-0 0.13j 0.09-0.13j 0.11-0.13j 0.12-0.13j 0.13-0.13j 0.15-0.13j 0.16-0.13j 0.17-0.13j0.19-0.13j 10.6-0.10-0.12-0.10-0.10-0.12-0.10-0.12-0.12-0.15-0.12-0.15-0.12-0.10-0.1-0.10-0.10-0.12-0-0.10-0-0.12-0-0.15-0-0.12-0-0-0-0.15-0-0-0.12-0-0-0-0-0.12-0-0-0-0-0-0-0-0-0.12-0-0-0-0-0-0-0-0.12-0-0-0-0-0-0-0-0.12-0-0-0-0-0-0-0-0-0-0-0-0-0.12-0-0-0-0-0-0-0-0-0-0-0-0.12-0----0.12j 0.09-0.12j 0.11-0.12j 0.12-0.12j 0.13-0.12j 0.15-0.12j 0.16-0.12j 0.17-0.12j0.19-0.12j 0.10-0.10-0.10-0.10-0.10-0.11-0.10-0.11-0.10-0.11-0.10-0.15-0.11j-0.0-0.10-0.10-0.10-0.10-0.10-0-0.10-0-0.11-0.11-0-0-0-0.15-0-0.11-0-0-0.11-0-0-0-0-0-0-0-0-0-0.11-0-0-0-0-0-0.11-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0.11-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0.11j 0.09-0.11j 0.11-0.11j 0.12-0.11j 0.13-0.11j 0.15-0.11j 0.16-0.11j 0.17-0.11j0.19-0.11j 0.0-0.0-0.0-0.0-0.0-0.0-0.0-0.0-0.0-0.0-0.0-0.0-0.0-0.0-0-0.0-0-0.0-0-0.0-0-0-0.0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 0.09J0.09-0.09J0.11-0.09J0.12-0.09J0.13-0.09J0.15-0.09J0.16-0.09J0.17-0.09j0.19-0.09j 0.0 0 0 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08j 0.09-0.08j 0.11-0.08j 0.12-0.08j 0.13-0.08j 0.15-0.08j 0.16-0.08j 0.17-0.08j0.19-0.08j 10.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.07J0.09-0.07J0.11-0.07J0.12-0.07J0.13-0.07J0.15-0.07J0.16-0.07J0。
scale = 2
size_x, size_y = 15, 15
subrange_x, subrange_y = (-.20, .20), (-.20, .20)

delta_x, delta_y = (subrange_x[1] - subrange_x[0]), (subrange_y[1] - subrange_y[0])
scale_x, scale_y = (size_x * scale), (size_y * scale)

def get_coords(x, y):
    real = (x/scale_x * delta_x) + subrange_x[0]
    imag = (y/scale_y * delta_y) + subrange_y[0]
    return real, imag

for y in range(scale_y):
    z_values = []
    for x in range(scale_x):
        z = get_coords(x, y)
        complex_num = complex(z[0], z[1])
        z_values.append(f'{complex_num:.2f}')

    print(f'y={y:02}:', ' '.join(z_values))