예제 #1
0
파일: main.cpp 프로젝트: scholli/gpucast
  void open_igs(std::string const& file, gpucast::gl::material const& m)
  {
    gpucast::igs_loader loader;
    gpucast::surface_converter converter;

    bool initialized_bbox = false;

    auto nurbs_objects = loader.load(file);

    for (auto nurbs_object : nurbs_objects)
    {
      auto bezier_object = std::make_shared<gpucast::beziersurfaceobject>();
      converter.convert(nurbs_object, bezier_object);

      if (!initialized_bbox) {
        _bbox.min = bezier_object->bbox().min;
        _bbox.max = bezier_object->bbox().max;
      }
      else {
        _bbox.merge(bezier_object->bbox().min);
        _bbox.merge(bezier_object->bbox().max);
      }

      bezier_object->init();

      auto drawable = std::make_shared<gpucast::gl::bezierobject>(*bezier_object);
      drawable->set_material(m);
      drawable->rendermode(gpucast::gl::bezierobject::tesselation);
      drawable->trimming(gpucast::beziersurfaceobject::contour_kd_partition);
      drawable->tesselation_max_pixel_error(1.0);

      _objects.push_back(drawable);
    }
  }
예제 #2
0
int main() {
    case_conversion();
    trimming();
    predicates();
    find_algorithms();
    join();

    return 0;
}
예제 #3
0
/*le o stdin um caracter*/
char le_caracter(){
	char c = -1;
	char *in;
	char input[5];
	fgets (input,5,stdin);
	in = trimming(input);
	if(strlen(in)>2) return -1;
	if(isalpha(in[0]) && in[1] == '\0'){
		c = in[0];
		c = toupper(c);
	}
	return c;
}
예제 #4
0
/*le o stdin um inteiro*/
int le_inteiro(){
  	int n = -1;
	char input[20];
	char *in;
	fgets (input, 20, stdin);
	in = trimming(input);
	if(strlen(in)>2) return -1;
	if(isdigit(in[0]))
	{
		if(isdigit(in[1]) || in[1] == '\0')
			n = atoi(in);
	}
	return n;
}
예제 #5
0
/*le o stdin codigo de cliente*/
char* ler_CodigoCliente(){
	char *r = NULL;
	char input[20];
	char *in;
	fgets (input, 20, stdin);
	in = trimming(input);
	if(strlen(in)>5) return r;
	if(isalpha(in[0]) && isalpha(in[1]) && 
		isdigit(in[2]) && isdigit(in[3]) &&
		 isdigit(in[4]))
		 {r = in; in[0] = toupper(in[0]);
				  in[1] = toupper(in[1]);
				  in[5] = '\0';}
	return r;
}
예제 #6
0
void 
mainwindow::update_interface ( )
{
  _menu->update();
  _shading_menu->update();

  trimming();

  set_button_color(_current_ambient, _current_material.ambient);
  set_button_color(_current_diffuse, _current_material.diffuse);
  set_button_color(_current_specular, _current_material.specular);

  // update window
  QMainWindow::update();
}