t_xray_jit_cellcoords *xray_jit_cellcoords_new(void)
{
	t_xray_jit_cellcoords *x;
	t_jit_matrix_info info;
	void *m;

	if (x=(t_xray_jit_cellcoords *)jit_object_alloc(_xray_jit_cellcoords_class)) {
		x->plane = 0;
		x->out_mode = 0;

		//initialize internal matrix
		jit_matrix_info_default(&info);
		info.type = _jit_sym_char;
		info.planecount = 2;
		x->temp_name = jit_symbol_unique();
		m = jit_object_new(_jit_sym_jit_matrix, &info);
		m = jit_object_method(m, _jit_sym_register, x->temp_name);

		//Register matrix name
		if(!m) error("could not allocate internal matrix!");
		jit_object_attach(x->temp_name, x);
		x->temp = m;
	} else {
		x = NULL;
	}
	return x;
}
Example #2
0
void *max_jit_turtle_new(t_symbol *s, long argc, t_atom *argv)
{
	t_max_jit_turtle *x;
	t_jit_matrix_info info;
	long attrstart,i,j;
	jit_matrix_info_default(&info);

	if (x = (t_max_jit_turtle *)max_jit_obex_new(max_jit_turtle_class,gensym("jit_turtle"))) {
		max_jit_obex_dumpout_set(x, outlet_new(x,0L)); //general purpose outlet(rightmost)
		x->turtleout = outlet_new(x,0L); // outlet for the LCD commands
		
		x->clearmode = 1;
		
		x->scale = 10;
		x->angle = 30;
		x->origin[0] = 80; // kind of arbitrary, but i think the default jit.lcd matrix size is 160x120.
		x->origin[1] = 120;
		x->origincount = 2;
		x->curstack=0;
		x->stacknew=1;
		for(i=0;i<MAXSTACK;i++) {
			x->thisangle[i] = -PI2/4.; // start facing north (upwards)
			x->stack_x[i] = x->origin[0];
			x->stack_y[i] = x->origin[1];
			x->pensize[i] = 1;
		}
		
		max_jit_attr_args(x,argc,argv); //handle attribute args
	}
	return (x);
}
Example #3
0
void legion_outputErrorMatrix(t_legion *x){
	void *m;
	t_jit_matrix_info info;
	char *bp, *p;
	int row, col, i;

	jit_matrix_info_default(&info);
	info.type = _jit_sym_float64;
	info.planecount = 1;
	info.dim[0] = x->t_numRows;
	info.dim[1] = x->t_numColumns;
	t_symbol *name = jit_symbol_unique();
	m = jit_object_new(_jit_sym_jit_matrix, &info);
	//m = jit_object_method(m, _jit_sym_register, name);
	m = jit_object_register(m, name);
	//jit_object_method(m, gensym("setinfo"), &info);
	info.dimstride[0] = sizeof(double);
	info.dimstride[1] = info.dimstride[0] * info.dim[0];
	post("%d %d", info.dimstride[0], info.dimstride[1]);
	jit_object_method(m, _jit_sym_getdata, &bp);
	for(row = 0; row < x->t_numRows; row++){
		for(col = 0; col < x->t_numColumns; col++){
			i = (row * x->t_numRows) + col;
			p = bp + (i / info.dim[0]) * info.dimstride[1] + (i % info.dim[0]) * info.dimstride[0];
			*((double *)p) = x->t_rosom[row][col].error;
			post("%d [%d, %d] %f %p", i, row, col, x->t_rosom[row][col].error, p);
		}
	}
	t_atom a;
	SETSYM(&a, name);
	outlet_anything(x->t_out, _jit_sym_jit_matrix, 1, &a);
}
Example #4
0
t_xray_jit_fdm *xray_jit_fdm_new(void)
{
	t_xray_jit_fdm *x;
	void *m;
	t_jit_matrix_info info;
		
	if (x=(t_xray_jit_fdm *)jit_object_alloc(_xray_jit_fdm_class)) {
		x->spacestep = 1.0;
		x->direction = ps_x;
		x->calced = 0;
		x->dim[0] = 1;
		x->dim[1] = 1;
		
		//create internal matrix
		jit_matrix_info_default(&info);
		info.type = _jit_sym_float32;
		info.planecount = 1;
		x->previousName = jit_symbol_unique();
		m = jit_object_new(_jit_sym_jit_matrix, &info);
		m = jit_object_method(m, _jit_sym_register, x->previousName);
		
		//Register matrix name
		if(!m) error("could not allocate internal matrix!");
		jit_object_attach(x->previousName, x);
		x->previous = m;		
	} else {
		x = NULL;
	}	
	return x;
}
t_xray_jit_colormap *xray_jit_colormap_new(void)
{
	t_xray_jit_colormap *x;
	void *m;
	t_jit_matrix_info info;
		
	if (x=(t_xray_jit_colormap *)jit_object_alloc(_xray_jit_colormap_class))
	{
		x->mode = 0;
		
		jit_matrix_info_default(&info);
		info.dimcount = 1;
		info.type = _jit_sym_float32;
		info.planecount = 3;
		x->Colorname = jit_symbol_unique();
		m = jit_object_new(_jit_sym_jit_matrix, &info);
		m = jit_object_method(m, _jit_sym_register, x->Colorname);
		
		//Register matrix name
		if(!m) error("could not allocate internal matrix!");
		jit_object_attach(x->Colorname, x);
		x->Color = m;
		
		jit_matrix_info_default(&info);
		info.dimcount = 1;
		info.type = _jit_sym_float32;
		info.planecount = 1;
		x->Countname = jit_symbol_unique();
		m = jit_object_new(_jit_sym_jit_matrix, &info);
		m = jit_object_method(m, _jit_sym_register, x->Countname);
		
		//Register matrix name
		if(!m) error("could not allocate internal matrix!");
		jit_object_attach(x->Countname, x);
		x->Count = m;
	}
	else
	{
		x = NULL;
	}	
	return x;
}
t_xray_jit_levelsetseg *xray_jit_levelsetseg_new(void)
{
	t_xray_jit_levelsetseg *x;
	void *m;
	t_jit_matrix_info info;
	t_atom a;

	if (x=(t_xray_jit_levelsetseg *)jit_object_alloc(_xray_jit_levelsetseg_class)) {
		x->evolve = 0;
		x->smooth = 0;
		x->point[0] = 160;
		x->point[1] = 120;
		x->pointcount = 2;
		x->radius = 4;
		x->cycles = 7;
		x->Na = 7;
		x->Ng = 3;
		x->Ns = 5;
		x->gaussKernel = NULL;

		jit_atom_setlong(&a, 5);

		xray_jit_levelsetseg_Ng(x, 0L, 1, &a);

		//allocate and initialize linked-list
		DLLcreateList( &(x->L_in) );
		DLLcreateList( &(x->L_out) );

		x->inside = (t_RegionStats *)jit_getbytes(sizeof(t_RegionStats));
		x->outside = (t_RegionStats *)jit_getbytes(sizeof(t_RegionStats));

		sqrtTwoPi = jit_math_sqrt(2*jit_math_acos(-1));

		//setup backgFloat matrix
		jit_matrix_info_default(&info);
		info.type = _jit_sym_char;
		info.planecount = 1;
		x->phiName = jit_symbol_unique();
		m = jit_object_new(_jit_sym_jit_matrix, &info);
		m = jit_object_method(m, _jit_sym_register, x->phiName);

		//Register matrix name
		if(!m) error("could not allocate internal matrix!");
		jit_object_attach(x->phiName, x);
		x->phi = m;
	} else {
		x = NULL;
	}
	return x;
}