Math-Fractal-Mandelbrot
view release on metacpan or search on metacpan
Mandelbrot.xs view on Meta::CPAN
CODE:
a2 = (AV*)sv_2mortal((SV*)newAV());
av_extend (a2, l + 1);
x2 = x1 + l;
i = 1; same = 0; last = _point (x1,y1);
for (x = x1; x < x2; x++)
{
iter = _point (x,y1);
av_push( a2, newSViv(iter) );
if (iter == last) { same++; } else { break; }
}
for (;x < x2; x++)
{
iter = _point (x,y1);
av_push( a2, newSViv(iter) );
}
av_push( a2, newSViv(same) );
RETVAL = (AV*)a2;
OUTPUT:
RETVAL
##############################################################################
# ver_line() - calculate fractal at a vertical stripe
# input: X and Y coordinates of the start point
# L length of line
AV*
ver_line(myclass, x1, y1, l)
unsigned int x1
unsigned int y1
unsigned int l
INIT:
unsigned int y, y2, i, last, iter, same;
AV* a2;
CODE:
a2 = (AV*)sv_2mortal((SV*)newAV());
av_extend (a2, l + 1);
y2 = y1 + l;
i = 1; same = 0; last = _point (x1,y1);
for (y = y1; y < y2; y++)
{
iter = _point (x1,y);
av_push( a2, newSViv(iter) );
if (iter == last) { same++; } else { break; }
}
for (;y < y2; y++)
{
iter = _point (x1,y);
av_push( a2, newSViv(iter) );
}
av_push( a2, newSViv(same) );
RETVAL = a2;
OUTPUT:
RETVAL
##############################################################################
# set_max_iter() - set maximum iterations
# input: new max_iter
unsigned int
set_max_iter(myclass, new_max_iter)
unsigned int new_max_iter
CODE:
m_max_iter = new_max_iter;
if (new_max_iter == 0) { m_max_iter = 1; } /* at least 1 */
RETVAL = m_max_iter;
OUTPUT:
RETVAL
##############################################################################
# set_limit()
# input: new limit
double
set_limit(myclass, new_limit)
double new_limit
CODE:
m_limit = new_limit;
RETVAL = m_limit;
OUTPUT:
RETVAL
##############################################################################
# set_epsilon()
# input: new limit
double
set_epsilon(myclass, new_e)
double new_e
CODE:
m_epsilon = new_e;
RETVAL = m_epsilon;
OUTPUT:
RETVAL
##############################################################################
# set_bounds()
# input: x1,y1, x2,y2, w,h
void
set_bounds(myclass, nx1, ny1, nx2, ny2, nw, nh)
double nx1
double ny1
double nx2
double ny2
unsigned int nw
unsigned int nh
CODE:
m_x1 = nx1;
m_y1 = ny1;
m_x2 = nx2;
m_y2 = ny2;
m_w = nw;
m_h = nh;
( run in 2.382 seconds using v1.01-cache-2.11-cpan-5c0b1e786e0 )