Example #1
0
//copypaste de LR
void SVMachine::run(){
//	std::cout << "I'm running the mode ";

	if(C_executionMode == 0){
//		std::cout << "Test" << std::endl;

		loadTrainingSet(C_trainingFile);
		loadTestingSet(C_testingFile);

//		//Comprobamos que se han cargado bien los dos archivos
//
//		for(unsigned int i = 0; i < C_trainingSet.size(); i++){
//			for(unsigned int j = 0; j < C_trainingSet[i].getInput().size(); j++){
//				std::cout << C_trainingSet[i].getInput()[j] << ' ';
//			}
//			std::cout << std::endl << C_trainingSet[i].getResult()[0] << std::endl;
//		}
//
//		std::cout << std::endl;
//
//		for(unsigned int i = 0; i < C_testingSet.size(); i++){
//			for(unsigned int j = 0; j < C_testingSet[i].getInput().size(); j++){
//				std::cout << C_testingSet[i].getInput()[j] << ' ';
//			}
//			std::cout << std::endl << C_testingSet[i].getResult()[0] << std::endl;
//		}
//
//		//Fin de la comprobacion

		train();
		test();
	} else if(C_executionMode == 1){
//		std::cout << "Predict" << std::endl;

		loadInput(C_inputFile);
		loadParams();

//		//Comprobamos que se leen bien los archivos
//
//		for(unsigned int i = 0; i < C_theta.size(); i++){
//			std::cout << C_theta[i] << ' ';
//		}
//		std::cout << std::endl << std::endl;
//
//		for(unsigned int i = 0; i < C_input.getInput().size(); i++){
//			std::cout << C_input.getInput()[i] << ' ';
//		}
//		std::cout << std::endl << C_input.getResult() << std::endl;
//
//		//Fin de la comprobacion

		predict(C_input);
		showParams();

		//Escribir lo que devuelve input en algun lado?
	}
}
void
LivePathEffectEditor::onSelectionChanged(Inkscape::Selection *sel)
{
    if (lpe_list_locked) {
        // this was triggered by selecting a row in the list, so skip reloading
        lpe_list_locked = false;
        return;
    } 

    effectlist_store->clear();
    current_lpeitem = NULL;

    if ( sel && !sel->isEmpty() ) {
        SPItem *item = sel->singleItem();
        if ( item ) {
            if ( SP_IS_LPE_ITEM(item) ) {
                SPLPEItem *lpeitem = SP_LPE_ITEM(item);

                effect_list_reload(lpeitem);

                current_lpeitem = lpeitem;

                set_sensitize_all(true);
                if ( sp_lpe_item_has_path_effect(lpeitem) ) {
                    Inkscape::LivePathEffect::Effect *lpe = sp_lpe_item_get_current_lpe(lpeitem);
                    if (lpe) {
                        showParams(*lpe);
                        lpe_list_locked = true; 
                        selectInList(lpe);
                    } else {
                        showText(_("Unknown effect is applied"));
                    }
                } else {
                    showText(_("No effect applied"));
                    button_remove.set_sensitive(false);
                }
            } else {
                showText(_("Item is not a path or shape"));
                set_sensitize_all(false);
            }
        } else {
            showText(_("Only one item can be selected"));
            set_sensitize_all(false);
        }
    } else {
        showText(_("Empty selection"));
        set_sensitize_all(false);
    }
}
void LivePathEffectEditor::on_effect_selection_changed()
{
    Glib::RefPtr<Gtk::TreeSelection> sel = effectlist_view.get_selection();
    if (sel->count_selected_rows () == 0)
        return;

    Gtk::TreeModel::iterator it = sel->get_selected();
    LivePathEffect::LPEObjectReference * lperef = (*it)[columns.lperef];

    if (lperef && current_lpeitem) {
        if (lperef->lpeobject->get_lpe()) {
            lpe_list_locked = true; // prevent reload of the list which would lose selection
            sp_lpe_item_set_current_path_effect(current_lpeitem, lperef);
            showParams(*lperef->lpeobject->get_lpe());
        }
    }
}
void handleKeyboardspecial(int key, int x, int y)
{   
	change_valf(key,active_param,'a',&alpha);
	change_vali(key,active_param,'d',&diffusivity_type_d);
	change_valf(key,active_param,'e',&warp_eta);
	change_valf(key,active_param,'E',&epsilon_d);
	change_vali(key,active_param,'i',&num_iterations_inner);
	change_vali(key,active_param,'I',&num_iterations_outer);
	change_valf(key,active_param,'l',&max_displacement);
	change_vali(key,active_param,'m',&max_warp_levels);
	change_valf(key,active_param,'O',&omega);
	clamp(0,&num_iterations_inner,10000000);
	clamp(0,&num_iterations_outer,10000000);
	clampf(0,&omega,2);
	clampf(0,&warp_eta,1);
	clamp(0,&max_warp_levels,10000000);
	showParams();    
}
void CalcKinCharacteristics::run()
{
	showParams();

	core::Code code;
	core::InternalGearRatios k;
	core::GearSetTypes	types;
	core::FakeItem	fake;
	std::vector<core::IIOItem*> containers;
	containers.push_back( &code );
	containers.push_back( &k );
	containers.push_back( &types );
	containers.push_back( &fake );

	while ( core::Singletons::getInstance()->getLoaderFromFile()->load( containers, core::IOFileManager::eOutputFileType::KIN_SLOW ) )
	{
		Characteristics ch;
		ch._tooth = calcZ(k, types);
		ch._torque = calcM( code, k );
		ch._angVelocity = calcW( code, k, ch._tooth );
		ch._power = calcN( ch._angVelocity, ch._torque );
		ch._kpdZacStepen = calcKpdZacStepen( k, ch._angVelocity, ch._power );
		ch._kpdTorque = calcMh( code, k, ch._kpdZacStepen );
		ch._qualityCriterias = calcQualityCriterias( ch._kpdTorque, ch._angVelocity );

		printCharacteristics( code, ch );

		NS_CORE Singletons::getInstance()->getIOFileManager()->writeToFile( NS_CORE IOFileManager::eOutputFileType::RESULT, code );

		NS_CORE GearBoxWithChanger gb( code );
		gb.createChainsForAllgears();
		NS_CORE Singletons::getInstance()->getIOFileManager()->writeToFile( NS_CORE IOFileManager::eOutputFileType::RESULT, gb );

		NS_CORE Singletons::getInstance()->getIOFileManager()->writeToFile( NS_CORE IOFileManager::eOutputFileType::RESULT, types );
		NS_CORE Singletons::getInstance()->getIOFileManager()->writeToFile( NS_CORE IOFileManager::eOutputFileType::RESULT, fake );
		NS_CORE Singletons::getInstance()->getIOFileManager()->writeToFile( NS_CORE IOFileManager::eOutputFileType::RESULT, k );
		NS_CORE Singletons::getInstance()->getIOFileManager()->writeToFile( NS_CORE IOFileManager::eOutputFileType::RESULT, ch );
		NS_CORE Singletons::getInstance()->getIOFileManager()->writeToFile(NS_CORE IOFileManager::eOutputFileType::RESULT, NS_CORE IOFileManager::end);

		m_characteristics.push_back( ch );
	}
}
void handleKeyboard(unsigned char key, int x, int y)
{
	int h;
	switch (key)
	{
	case 46:  compute(); break;
	case 27:  exit(0);
	case 'o': h = glutGet(GLUT_WINDOW_HEIGHT);
			  glutReshapeWindow(h*num_images_side_by_side*nx/ny,h); 
			  glutPostRedisplay();
			  break;
	case '+': glutReshapeWindow(glutGet(GLUT_WINDOW_WIDTH)*1.5f,
								glutGet(GLUT_WINDOW_HEIGHT)*1.5f);
			  glutPostRedisplay();
			  break;
	case '-': glutReshapeWindow(glutGet(GLUT_WINDOW_WIDTH)*0.6666f,
								glutGet(GLUT_WINDOW_HEIGHT)*0.6666f);
			  glutPostRedisplay();
			  break;
	default:  active_param=key;
	}
	showParams();
}
Example #7
0
void handleKeyboard(unsigned char key, int x, int y)
{
        /* keyboard handler */
        switch(key) {
        case 'p':
                g_active_param=0; break;
        case 't':
                g_active_param=8; break;
        case 'a':
                g_active_param=1; break;
        case 'i':
                g_active_param=2; break;
        case 'g':
                g_active_param=4; break;
        case 'o':
                g_active_param=5; break;
        case 'w':
                g_active_param=6; break;
        case 'e':
                g_active_param=7; break;
        case 44: //,
                if (g_direct_compute==1) {g_direct_compute=0; break; }
                if (g_direct_compute==0) {g_direct_compute=1; break; }
        case 46: //.
                handleComputeDisplacements(); break;
        case 27:
                exit(1);
        default:
                printf("\nUnknown key pressed (Code %d).",key);
        }

        /* show new parameters and displacement field */
        showParams();
        handleDraw();
        return;
}
Example #8
0
void Generate::run()
{
	showParams();
	NS_CORE Singletons::getInstance()->getIOFileManager()->cleanFiles();
	auto N = NS_CORE Singletons::getInstance()->getInitialData()._numberOfPlanetaryGears;

	//	Заполняем вектор всех возможных связей, пропускаем связи между элементами одного ряда и реверсивные связи.
	m_allLinks.clear();
	for ( size_t i = 1; i < N; i++ )
	{
		for ( const auto& mElem1 : s_elements )
		{
			for ( size_t j = i + 1; j <= N; j++ )
			{
				for ( const auto& mElem2 : s_elements )
				{
					m_allLinks.push_back( NS_CORE Link( NS_CORE Element( mElem1, NS_CORE GearSetNumber( i ) ), NS_CORE Element( mElem2, NS_CORE GearSetNumber( j ) ) ) );
				}
			}
		}
	}

	generateInOut();
}
int main (int argc, char* argv[])
{
	int maxgv;
	char * console_string = (char*)calloc(3000,sizeof(char));
	lastclickx=lastclicky=-1;
	active_param='\0';
	num_images_side_by_side=2;
	int no_frontend;
	parse_arg_int   (argc,argv,"bordersizex",&bx,2,console_string);
	parse_arg_int   (argc,argv,"bordersizey",&by,2,console_string);
	parse_arg_float (argc,argv,"alpha",&alpha,100,console_string);
	parse_arg_float (argc,argv,"epsilon_d",&epsilon_d,0.01f,console_string);
	parse_arg_int   (argc,argv,"diffusivity_type_d",&diffusivity_type_d,0,console_string);
	parse_arg_int   (argc,argv,"iterations_inner",&num_iterations_inner,30,console_string);
	parse_arg_int   (argc,argv,"iterations_outer",&num_iterations_outer,5,console_string);
	parse_arg_float (argc,argv,"omega",&omega,1.9f,console_string);
	parse_arg_float (argc,argv,"eta",&warp_eta,0.5f,console_string);
	parse_arg_int   (argc,argv,"max_warp_levels",&max_warp_levels,200,console_string);
	parse_arg_float (argc,argv,"max_displacement",&max_displacement,5.0f,console_string);
	parse_arg_string(argc,argv,"basename",basename,"../images/yos",console_string);
	parse_arg_int   (argc,argv,"no_frontend",&no_frontend,0,console_string);
	char filename[200];
	printf("------\n%s---------\n",console_string);
	
	sprintf(filename,"%s1.pgm",basename);
	f1 = read_pgm_image(filename,&nx,&ny,bx,by,&maxgv);
	
	sprintf(filename,"%s2.pgm",basename);
	f2 = read_pgm_image(filename,&nx,&ny,bx,by,&maxgv);
        
	//printf("f1[100][150] =%f\n",f1[100][150]);
	//printf("f1[150][20] =%f\n",f1[150][20]);
	calloc_multi(1,3,sizeof(float),3,nx,ny,0,bx,by,0,0,0,&of_rgb);
	calloc_multi(4,2,sizeof(float),nx,ny,bx,by,0,0,&u,&v,&u_truth,&v_truth);
	calloc_multi(1,3,sizeof(uchar),num_images_side_by_side*nx,ny,
				 3, 0,0,0, 0,0,0, &p6);
//		printf("f1[150][20] =%f\n",f1[150][20]);
	sprintf(filename,"%st.F",basename);
	read_barron_data(filename,u_truth,v_truth,nx,ny,bx,by);//------------------------------uncomment for computing errors.!!!!!!!!!!!!!!!!!!!!

/*	rewrite the barron file to txt file	*/
//	FILE* UT;
//	FILE* VT;
//	int i,j;
//	UT = fopen("utruth.txt","w");
//	VT = fopen("vtruth.txt","w");
//	for(i = bx; i <nx+bx; i++){
//		for(j = by; j < by+ny; j++)
//		{
//			fprintf(UT,"%f\t",u_truth[i][j]);
//			fprintf(VT,"%f\t",v_truth[i][j]);
//		}
//		fprintf(UT,"\n");
//		fprintf(VT,"\n");
//	}
//	fclose(UT);
//	fclose(VT);

	if(!no_frontend)
	{
		glutInit(&argc, argv);
		glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);

		glutInitWindowSize(num_images_side_by_side*nx,ny);
		glutCreateWindow("Frontend Skeleton");

		glutDisplayFunc(handleDraw);
		glutKeyboardFunc(handleKeyboard);
		glutSpecialFunc(handleKeyboardspecial);
		glutMouseFunc(handleMouse);
		glutReshapeFunc(ReSizeGLScene);

		glEnable(GL_TEXTURE_2D);
		glGenTextures(1, &gl_rgb_tex);
		glBindTexture(GL_TEXTURE_2D, gl_rgb_tex);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
		if(ny%4) glPixelStorei(GL_UNPACK_ALIGNMENT, 1) ;
		compute();
		showParams();
		glutMainLoop();
	}
	else
	{
		compute();
		showParams();
	}

	return(0);
}
Example #10
0
PicProcessorResize::PicProcessorResize(wxString name, wxString command, wxTreeCtrl *tree, PicPanel *display, wxPanel *parameters): PicProcessor(name, command,  tree, display, parameters) 
{
	//p->DestroyChildren();
	//r = new BrightPanel(p,this,c);
	showParams();
}
Example #11
0
int main (int argc, char* argv[])
{
        int dims[10];
        char out_file[80];
/* ---------- set boundary and grid size ----------------------------------- */

        g_bx=1;
        g_by=1;

        g_hx=1;
        g_hy=sqrt(3)/2;

/* ---------- read in arguments -------------------------------------------- */


        if (argc <3) {
                fprintf(stderr, "Not sufficient arguments: \n");
                fprintf(stderr, "<APP> <LF H5 in file> <LF in dataset> <LF H5 out file>\n");
                exit(1);
        }
        strcpy(lf_h5,argv[1]);
        strcpy(lf_dataset,argv[2]);
        strcpy(out_file,argv[3]);
        /*TODO Group truth*/
        //strcpy(g_ref,argv[4]);


/* set default parameters */
        g_g_pixel_ratio = 1;

        g_g_max_disp=2.0;

        g_direct_compute=0;
        //
        g_e_sigma=1;
        //half kernel size
        g_m_alpha=2;

        g_m_type=0;

        g_active_param=1000;

        g_u_ref=NULL;
        g_v_ref=NULL;

        g_n_omega=1.95;

        g_n_warp_levels=6;
        g_n_warp_eta=0.5;

        g_n_iter = 800; // number of iteration




/* ---------- read in information of light field ------------------- */


        data = hdf5_read_lf(lf_h5, lf_dataset,W,H,S,T,C);

        //exit(1);
        g_nx=W;
        g_ny=H;
        /* extract two view */
        // RGB image from three views;
        float * view00 = new float[W*H*3];
        float * view03 = new float[W*H*3];
        float * view0_3 = new float[W*H*3];
        float * view30 = new float[W*H*3];
        float * view_30 = new float[W*H*3];
        // grayscale image from three view;
        float * img_c;
        float * img_l;
        float * img_r;
        float * img_u;
        float * img_d;
        // the center view index.
        int center = floor((S-1)/2.0);
        for(int j = 0; j<H; j++) {
                for(int i =0; i<W; i++) {
                        for(int c=0; c<3; c++) {
                                view00[j*W*3+i*3+c]=data[c*W*H*S*T + i*H*S*T + j*S*T + (center)*T + center];
                                view03[j*W*3+i*3+c]=data[c*W*H*S*T + i*H*S*T + j*S*T + (center)*T + center-5];
                                view0_3[j*W*3+i*3+c]=data[c*W*H*S*T + i*H*S*T + j*S*T + (center)*T + center-3];
                                view30[j*W*3+i*3+c]=data[c*W*H*S*T + i*H*S*T + j*S*T + (center)*T + center+3];
                                view_30[j*W*3+i*3+c]=data[c*W*H*S*T + i*H*S*T + j*S*T + (center)*T + center+5];
                        }
                }
        }
        img_c = convertRGBtoGray(W,H,view00);
        img_l = convertRGBtoGray(W,H,view_30);
        img_r = convertRGBtoGray(W,H,view30);
        img_d = convertRGBtoGray(W,H,view0_3);
        img_u = convertRGBtoGray(W,H,view03);
        free(view00);
        free(view03);
        free(view0_3);
        free(view30);
        free(view_30);
        /* Write gray image  */
        writeImageGray("view_c.png",W,H,img_c,"Image center");
        writeImageGray("view_l.png",W,H,img_l,"Image Left");
        writeImageGray("view_r.png",W,H,img_r,"Image Right");
        writeImageGray("view_u.png",W,H,img_u,"Image Up");
        writeImageGray("view_d.png",W,H,img_d,"Image Down");

/* ---------- memory allocation ------------------------------------ */

        ALLOC_MATRIX(2, g_nx+2*g_bx, g_ny+2*g_by, &g_f1,   &g_f2);
        ALLOC_MATRIX(2, g_nx+2*g_bx, g_ny+2*g_by, &g_f1_s, &g_f2_s);
        ALLOC_MATRIX(1, g_nx+2*g_bx, g_ny+2*g_by, &g_f2_bw);
        ALLOC_MATRIX(2, g_nx+2*g_bx, g_ny+2*g_by, &g_u,    &g_v);

        //if (argc==5)
        //        ALLOC_MATRIX(2, g_nx+2*g_bx, g_ny+2*g_by, &g_u_ref,   &g_v_ref);

        ALLOC_CUBIX(1, 2*g_nx+2*g_bx, g_ny+2*g_by, 3, &g_p6);
        ALLOC_CUBIX(1, g_nx+2*g_bx, g_ny+2*g_by, 3, &g_disp);
        //g_pixels = (GLubyte *) malloc (2*(g_nx+1)*g_ny*3*sizeof(GLubyte));
        g_pixels = new GLubyte[2*(g_nx+1)*g_ny*3*sizeof(GLubyte)];
        uvbuffer = new float[g_nx*g_ny*2];


/* ---------- read in image pair ------------------------------------------- */
        //
        // calculate_flow_write_img(img_c,img_l,"flow_left.png",out_file,"/flow/left");
        // calculate_flow_write_img(img_c,img_r,"flow_right.png",out_file,"/flow/right");
        // calculate_flow_write_img(img_c,img_u,"flow_up.png",out_file,"/flow/up");
        // calculate_flow_write_img(img_c,img_d,"flow_down.png",out_file,"/flow/down");
/* ---------- read in ground truth displacement field ---------------------- */

        //if (argc==5)
        //        read_barron_data(g_ref,g_u_ref,g_v_ref,g_nx,g_ny,g_bx,g_by);

//
/* ---------- M A I N   L O O P -------------------------------------------- */

        for(int j=0; j<g_ny; j++) {
                for(int i=0; i<g_nx; i++) {
                        g_f1[i+g_bx][j+g_by]= img_c[j*g_nx+i]*255;
                        g_f2[i+g_bx][j+g_by]= img_u[j*g_nx+i]*255;
                }
        }

// open OpenGL window */
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);

        glutInitWindowSize((int)round(2*g_nx*g_g_pixel_ratio),
                           (int)round(g_ny*g_g_pixel_ratio));
        glutCreateWindow("CORRESPONDENCE PROBLEMS - VISUALISATION FRONTEND");

// register handle routines
        glutDisplayFunc(handleDraw);
        glutIdleFunc(handleComputeNothing);
        glutKeyboardFunc(handleKeyboard);
        glutSpecialFunc(handleKeyboardspecial);
        glutMouseFunc(handleMouse);
//
// main
        handleComputeDisplacements();
        handleDraw();
        showParams();
        glutMainLoop();




/* ---------- free memory -------------------------------------------------- */

        FREE_MATRIX (2, g_nx+2*g_bx, g_ny+2*g_by, g_f1,   g_f2);
        FREE_MATRIX (2, g_nx+2*g_bx, g_ny+2*g_by, g_f1_s, g_f2_s);
        FREE_MATRIX (1, g_nx+2*g_bx, g_ny+2*g_by, g_f2_bw);
        FREE_MATRIX (2, g_nx+2*g_bx, g_ny+2*g_by, g_u,    g_v);
        //
        // printf("free matrix  \n");
        //
        // //TODO handle ground truth.
        // // if (argc==5)
        // //         FREE_MATRIX(2,   g_nx+2*g_bx, g_ny+2*g_by, g_u_ref, g_v_ref);
        //
        FREE_CUBIX (1, 2*g_nx+2*g_bx, g_ny+2*g_by, 3, g_p6);
        FREE_CUBIX (1, g_nx+2*g_bx, g_ny+2*g_by, 3, g_disp);


        free(g_pixels);
        free(uvbuffer);

        printf("\n\n\n");


        return(0);
}
Example #12
0
void handleKeyboardspecial(int key, int x, int y)
{
        /* keyboard handler */

        switch(key) {
        case GLUT_KEY_F1:
                /* call help menu */
                print_console_line();
                printf("\n\n F1     ........this help\n");
                printf(" F2     ........write out displacement field in colour code \n");
                printf(" F8     ........write out motion compensated 2nd frame \n");
                printf(" ESC    ........program termination\n");
                printf(" p      ........select presmoothing parameter\n");
                printf(" a      ........select smoothness weight\n");
                printf(" i      ........select number of iterations\n");
                printf(" o      ........select SOR overrelaxation parameter\n");
                printf(" w      ........select number of warping levels\n");
                printf(" e      ........select warping rescaling factor\n");
                printf(" g      ........select max displacement magnitude\n");
                printf(" up     ........increase active parameter\n");
                printf(" down   ........decrease active parameter\n");
                printf(" ,      ........direct computation on/off \n");
                printf(" .      ........compute displacement field \n");
                print_console_line();
                fflush(stdout);
                break;

        case GLUT_KEY_F2:
                /* write out displacement field */
                if (g_u_ref!=NULL)
                {
                        int i,j;
                        for (i=g_bx; i<g_nx+g_bx; i++)
                                for (j=g_by; j<g_ny+g_by; j++)
                                {
                                        if((g_u_ref[i][j]==100.0)&&(g_v_ref[i][j]==100.0))
                                        {
                                                g_u[i][j]=100.0;
                                                g_v[i][j]=100.0;
                                        }
                                }
                }
                write_ppm_blank_header("out.ppm",g_nx,g_ny);
                write_ppm_data("out.ppm",g_p6,g_nx,g_ny,g_bx+g_nx,g_by);
                write_ppm_blank_header("displacement.ppm",g_nx,g_ny);
                write_ppm_data("displacement.ppm",g_disp,g_nx,g_ny,g_bx,g_by);
                break;

        case GLUT_KEY_F8:
                /* write out motion compensated 2nd frame */
                backward_registration(g_f1,g_f2,g_f2_bw,g_u,g_v,
                                      g_nx,g_ny,g_bx,g_by,g_hx,g_hy);
                write_pgm_blank_header("frame2_bw.pgm",g_nx,g_ny);
                write_pgm_data("frame2_bw.pgm",g_f2_bw,g_nx,g_ny,g_bx,g_by);
                break;

        case GLUT_KEY_DOWN:
                /* decrease sigma */
                if (g_active_param==0)
                {
                        g_e_sigma-=0.1;
                        if (g_e_sigma<0.1)
                                g_e_sigma=0.1;
                        if (g_direct_compute==1) handleComputeDisplacements(); break;
                }
                /* decrease alpha */
                if (g_active_param==1)
                {
                        g_m_alpha--;
                        if (g_m_alpha<=0) g_m_alpha=1;
                        if (g_direct_compute==1) handleComputeDisplacements(); break;
                }
                /* decrease number of iterations */
                if (g_active_param==2)
                {
                        g_n_iter-=100;
                        if (g_n_iter<0)
                                g_n_iter=0;
                        if (g_direct_compute==1) handleComputeDisplacements(); break;
                }
                /* decrease displacement field magnitude (visualsiation) */
                if (g_active_param==4)
                {
                        if (g_g_max_disp>=0.01)
                                g_g_max_disp=g_g_max_disp/1.1;
                        break;
                }
                /* decrease omega */
                if (g_active_param==5)
                {
                        g_n_omega=g_n_omega-0.01;
                        if (g_n_omega<0.01)
                                g_n_omega=0.01;
                        if (g_direct_compute==1) handleComputeDisplacements(); break;
                }
                /* decrease number of warping levels */
                if (g_active_param==6)
                {
                        g_n_warp_levels-=1;
                        if (g_n_warp_levels<0)
                                g_n_warp_levels=0;
                        if (g_direct_compute==1) handleComputeDisplacements(); break;
                }
                /* decrease type */
                if (g_active_param==8)
                {
                        g_m_type-=1;
                        if (g_m_type<0)
                                g_m_type=0;
                        if (g_direct_compute==1) handleComputeDisplacements(); break;
                }
                /* decrease eta */
                if (g_active_param==7)
                {
                        g_n_warp_eta-=0.05;
                        if (g_n_warp_eta<0.05)
                                g_n_warp_eta=0.05;
                        if (g_direct_compute==1) handleComputeDisplacements(); break;
                }

        case GLUT_KEY_UP:
                /* increase sigma */
                if (g_active_param==0)
                {

                        g_e_sigma+=0.1;

                        if (g_direct_compute==1) handleComputeDisplacements(); break;
                }
                /* increase alpha */
                if (g_active_param==1)
                {
                        g_m_alpha++;
                        if (g_direct_compute==1) handleComputeDisplacements(); break;
                }
                /* increase number of iterations */
                if (g_active_param==2)
                {
                        g_n_iter+=100;
                        if (g_direct_compute==1) handleComputeDisplacements(); break;
                }
                /* increase displacement field magnitude (visualisation) */
                if (g_active_param==4)
                {
                        g_g_max_disp=g_g_max_disp*1.1;
                        break;
                }
                /* increase omega */
                if (g_active_param==5)
                {
                        g_n_omega+=0.01;
                        if (g_n_omega>1.99)
                                g_n_omega=1.99;
                        if (g_direct_compute==1) handleComputeDisplacements(); break;
                }
                /* decrease number of warping levels */
                if (g_active_param==6)
                {
                        g_n_warp_levels+=1;
                        if (g_direct_compute==1) handleComputeDisplacements(); break;
                }
                /* increase eta */
                if (g_active_param==7)
                {
                        g_n_warp_eta+=0.05;
                        if (g_n_warp_eta>0.95)
                                g_n_warp_eta=0.95;
                        if (g_direct_compute==1) handleComputeDisplacements(); break;
                }
                /* increase type */
                if (g_active_param==8)
                {
                        g_m_type+=1;
                        if (g_m_type>10)
                                g_m_type=10;
                        if (g_direct_compute==1) handleComputeDisplacements(); break;
                }
        default:
                printf("\nUnknown key pressed (Code %d).",key);

        }

        /* show new parameters and displacement field */
        showParams();
        handleDraw();
        return;
}