Graphic problem
Donats dos nombres complexos c i z, sigui fc(z) = z2 + c. Donat un complex c, considereu la seqüència infinita fc(0), fc(fc(0)), … Per definició, el conjunt de Mandelbrot està compost pels valors de c tals que la seva seqüència infinita està afitada en valor absolut. Per exemple, amb c = −2 obtenim −2, 2, 2, 2, …, la qual està afitada. En canvi, amb c = 1 obtenim 1, 2, 5, 26, …, la qual tendeix a infinit. Per tant, −2 pertany al conjunt però 1 no.
Sigui c = x + yi, i sigui q(c) = x2 + y2. En general, donat un c, no és senzill determinar si pertany al conjunt. Però se sap que cap c tal que q(c) > 4 hi pertany. Així que aquí usarem una aproximació molt usual: Per a cada punt c en qüestió, anirem comprovant que q(c) ≤ 4, que q(fc(0)) ≤ 4, que q(fc(fc(0))) ≤ 4, com a molt k vegades. Si, en algun moment, la condició no es compleix, sabrem segur que el nombre no pertany al conjunt. Altrament, si la condició es compleix k vegades, suposarem que sí que hi pertany. Com mes gran sigui k, menys errors cometrà el programa, però a canvi més temps trigarà.
Feu un programa que dibuixi una zona del conjunt de Mandelbrot amb dos colors: un per als punts de dins del conjunt i l’altre per als de fora del conjunt.
Entrada
L’entrada consisteix en dos noms de colors c1 i c2, seguits de sis enters x1, x2, y1, y2, e, i k. Suposeu x1 < x2, y1 < y2, e ≥ 1, i k ≥ 1.
Sortida
Genereu una imatge (x2 − x1 + 1, y2 − y1 + 1). El paràmetre e indica l’escalat de la imatge: Les x a considerar són x1/e, (x1 + 1)/e, …, (x2 − 1)/e, i x2/e, i de forma similar amb les y. (Com a mostra, el primer exemple d’entrada té les x entre −1.5 i 0.7, i les y entre −1 i 1, ambdues dimensions amb increments de 0.01.) Per a cada punt p = (x, y), comenceu en c = x + yi. Si es compleix la condició mencionada anteriorment k vegades, llavors cal pintar el punt p de color c1; altrament de color c2.
Observacions
Input
Blue Orange -150 70 -100 100 100 160
Output
(221×201)
Input
Magenta Cyan -1200 -800 180 320 1000 100
Output
(401×141)
Input
Red Beige -250 200 -300 300 100 2
Output
(451×601)
Input
DeepPink Yellow 100 400 -700 -400 1000 60
Output
(301×301)