Я чувствую, что это действительно простой вопрос, однако мой мозг не работает. У меня есть скрипт, который генерирует набор Мандельброта в терминале python. Проблема в том, что я пытаюсь добавить возможность выполнять простые переводы в набор (перейти к x, перейти к y и увеличить), а при выполнении маневра масштабирования / масштабирования экран масштабируется относительно угла (0,0i или где бы ни находился экран), а не центр экрана, где я хочу, чтобы он был.
Строка, имеющая отношение к шкале, это строки 40 и 41 (c = (float (b) / zoom) + ax & d = (плавать (a) / увеличить) + ay). Также обратите внимание, что 0,0i на моем дисплее не соответствует точке 0,0i на реальном наборе Мандельброта (и все другие точки смещены), но по какой-то причине находится где-то дальше влево. (Я новичок в программировании). Если вы можете помочь мне с проблемой масштабирования или, возможно, большим смещением.
Наконец, если вы пытаетесь запустить это на своем компьютере, по умолчанию используется масштаб 30, x равен -3, а y равен -1. Просто введите это, когда он предложит вам, и он будет работать.
import math
zoom = 30
x = -3
y = -0.8
print('zoom: ',zoom)
print('x: ',x)
print('y: ',y)
#<-- (-), (+)-->
def test(num): # <---- test if complex number is in Mandelbrot set
is_true = '#' #<---- if it is, it will return a # to fill the grid space, otherwise, it's a space (blank)
z = 0
for i in range(100):
z = (z ** 2) + num
if z.real > 100:
is_true = " "
break
if z.imag > 2000:
is_true = " "
break
if z.imag < -2000:
is_true = " "
break
return is_true
def update(zoom, ax, ay): #<-- function will run through grid spaces and test if their in the Mandelbrot set
for a in range(63):
print(a)
#print("/n")
for b in range(115): # <-------- pixel / grid of display area
if a == round(63/2):
if b == round(115/2):
print('^'),
continue
c = (float(b)/zoom) + ax #- 1.3 <--|----- SCALE SCRIPTS
d = (float(a)/zoom) + ay #- 3 <--'
print(test(complex(c, d))), # <------- display text (output)
print('zoom: ',zoom)
print('x: ',ax)
print('y: ',ay)
while True:
update(float(raw_input('zoom: ')),float(raw_input('x: ')),float(raw_input('y: ')))