GijsB wrote:whats the diffrence?!
your in both ways making the numbers bigger/smaller
and even when i do that, it WONT work.
There's a big difference.
Currently, you are plotting onto a cartesian plane between 1.5 and 0.3 in the x, and -1.5 and 1.5 in the y. You are splitting this grid based on the size, and checking each point to see if it matches the criteria.
if you multiply 1.5 and -0.3 by 0.9 you get 1.35 and -0.27, so the mesh is finer, and slightly more zoomed in.
if you add and subtract 0.9 respectively, in the x plane you get 2.4 and -1.2, which results in zooming out by quite a large degree in the x plane. In the y plane, you end up zooming in.
resolution =2
size = 100
kt = 50
m = 4.0
xmin = 2.1
xmax = -0.6
ymin = -1.5
ymax = 1.5
dx = (xmax-xmin)/size
dy = (ymax-ymin)/size
pixels = {}
function run()
function MainCalculation(jx, jy, wx, wy, k)
local tx = wx*wx-(wy*wy+jx)
local ty = 2.0*wx*wy+jy
if tx*tx+ty*ty<=m and k<kt then
return MainCalculation(jx, jy, tx, ty, k + 1)
end
return k
end
for x = 0,size,resolution do
local jx = xmin+x*dx
for y = 0,size,resolution do
local jy = ymin+y*dy
table.insert(pixels,{X = x, Y = y, C = MainCalculation(jx, jy, 0, 0, 0)})
end
end
end
run()
function love.draw()
for i,v in pairs(pixels) do
love.graphics.setColor( -v.C, -v.C, -v.C, 255 )
love.graphics.rectangle("fill",v.X,v.Y,resolution,resolution)
end
end
function love.keypressed(k)
if k == "right" then
xmin = xmin*0.9
xmax = xmax*0.9
ymin = ymin*0.9
ymax = ymax*0.9
elseif k == "left" then
xmin = xmin/0.9
xmax = xmax/0.9
ymin = ymin/0.9
ymax = ymax/0.9
end
run()
end
resolution =2
size = 100
kt = 50
m = 4.0
xmin = 2.1
xmax = -0.6
ymin = -1.5
ymax = 1.5
dx = (xmax-xmin)/size
dy = (ymax-ymin)/size
pixels = {}
function run()
function MainCalculation(jx, jy, wx, wy, k)
local tx = wx*wx-(wy*wy+jx)
local ty = 2.0*wx*wy+jy
if tx*tx+ty*ty<=m and k<kt then
return MainCalculation(jx, jy, tx, ty, k + 1)
end
return k
end
for x = 0,size,resolution do
local jx = xmin+x*dx
for y = 0,size,resolution do
local jy = ymin+y*dy
table.insert(pixels,{X = x, Y = y, C = MainCalculation(jx, jy, 0, 0, 0)})
end
end
end
run()
function love.draw()
for i,v in pairs(pixels) do
love.graphics.setColor( -v.C, -v.C, -v.C, 255 )
love.graphics.rectangle("fill",v.X,v.Y,resolution,resolution)
end
end
function love.keypressed(k)
if k == "right" then
xmin = xmin*0.9
xmax = xmax*0.9
ymin = ymin*0.9
ymax = ymax*0.9
elseif k == "left" then
xmin = xmin/0.9
xmax = xmax/0.9
ymin = ymin/0.9
ymax = ymax/0.9
end
run()
end
resolution =2
size = 300
kt = 50
m = 4.0
xmin = 2.1
xmax = -0.6
ymin = -1.5
ymax = 1.5
dx = (xmax-xmin)/size
dy = (ymax-ymin)/size
pixels = {}
function run()
pixels = {}
function MainCalculation(jx, jy, wx, wy, k)
local tx = wx*wx-(wy*wy+jx)
local ty = 2.0*wx*wy+jy
if tx*tx+ty*ty<=m and k<kt then
return MainCalculation(jx, jy, tx, ty, k + 1)
end
return k
end
for x = 0,size,resolution do
local jx = xmin+x*dx
for y = 0,size,resolution do
local jy = ymin+y*dy
table.insert(pixels,{X = x, Y = y, C = MainCalculation(jx, jy, 0, 0, 0)})
end
end
end
run()
function love.draw()
for i,v in pairs(pixels) do
love.graphics.setColor( -v.C, -v.C, -v.C, 255 )
love.graphics.rectangle("fill",v.X,v.Y,resolution,resolution)
end
end
function love.keypressed(k)
if k == "d" then
xmin = xmin*0.9
xmax = xmax*0.9
run()
elseif k == "a" then
xmin = xmin/0.9
xmax = xmax/0.9
run()
elseif k == "s" then
ymin = ymin*0.9
ymax = ymax*0.9
run()
elseif k == "w" then
ymin = ymin/0.9
ymax = ymax/0.9
run()
elseif k == "q" then
xmin = xmin*0.9
xmax = xmax*0.9
ymin = ymin*0.9
ymax = ymax*0.9
dx = (xmax-xmin)/size
dy = (ymax-ymin)/size
run()
elseif k == "e" then
xmin = xmin/0.9
xmax = xmax/0.9
ymin = ymin/0.9
ymax = ymax/0.9
dx = (xmax-xmin)/size
dy = (ymax-ymin)/size
run()
end
end
resolution =2
size = 300
kt = 50
m = 4.0
xmin = 2.1
xmax = -0.6
ymin = -1.5
ymax = 1.5
dx = (xmax-xmin)/size
dy = (ymax-ymin)/size
pixels = {}
function run()
pixels = {}
function MainCalculation(jx, jy, wx, wy, k)
local tx = wx*wx-(wy*wy+jx)
local ty = 2.0*wx*wy+jy
if tx*tx+ty*ty<=m and k<kt then
return MainCalculation(jx, jy, tx, ty, k + 1)
end
return k
end
for x = 0,size,resolution do
local jx = xmin+x*dx
for y = 0,size,resolution do
local jy = ymin+y*dy
table.insert(pixels,{X = x, Y = y, C = MainCalculation(jx, jy, 0, 0, 0)})
end
end
end
run()
function love.draw()
for i,v in pairs(pixels) do
love.graphics.setColor( -v.C, -v.C, -v.C, 255 )
love.graphics.rectangle("fill",v.X,v.Y,resolution,resolution)
end
end
function love.keypressed(k)
if k == "d" then
xmin = xmin*0.9
xmax = xmax*0.9
run()
elseif k == "a" then
xmin = xmin/0.9
xmax = xmax/0.9
run()
elseif k == "s" then
ymin = ymin*0.9
ymax = ymax*0.9
run()
elseif k == "w" then
ymin = ymin/0.9
ymax = ymax/0.9
run()
elseif k == "q" then
xmin = xmin*0.9
xmax = xmax*0.9
ymin = ymin*0.9
ymax = ymax*0.9
dx = (xmax-xmin)/size
dy = (ymax-ymin)/size
run()
elseif k == "e" then
xmin = xmin/0.9
xmax = xmax/0.9
ymin = ymin/0.9
ymax = ymax/0.9
dx = (xmax-xmin)/size
dy = (ymax-ymin)/size
run()
end
end
when you update those when changing your look from left to right, up and down you change the size of the mandelbrot!
dx and dy must only be updated when zooming!!
thanks for all of your help kraftman!
Last edited by GijsB on Fri Jul 22, 2011 12:49 pm, edited 3 times in total.