예제 #1
0
파일: io.cpp 프로젝트: Elisane/PRAT
void Scene::save(const QString& filename) const
{
    std::vector<Point> points;
    collect_visible_points(points);
    
    if (filename.contains(".dat", Qt::CaseInsensitive))
    {
        save_dat(filename, points);
        return;
    }
    
    if (filename.contains(".txt", Qt::CaseInsensitive))
    {
        save_txt(filename, points);
        return;
    }
    
    if (filename.contains(".eps", Qt::CaseInsensitive))
    {
        save_eps(filename);
        return;
    }
    
    std::cout << red << "try (.dat, .txt, .eps) file format" << white << std::endl;
}
예제 #2
0
/*
 * Save scene to file
 */
int scene::save(char *p_dir, char *p_file, SCENE_TYPE type)
{
  int ret = 0;
  
  switch(type) {
    case SCENE_B2M:
      ret = save_b2m(p_dir,p_file);
      break;
    case SCENE_3DS:
      ret = save_3ds(p_dir,p_file);
      break;
    case SCENE_TXT:
      ret = save_txt(p_dir,p_file);
      break;
  }
  
  return(ret);
}
예제 #3
0
vector<ComputationalCell> calc_init_cond(const Tessellation& tess,
					 const FermiTable& eos,
					 const InitialData& id,
					 const Shape2D& cd)
{
  save_txt("pressure_reference.txt",create_pressure_reference(eos,id));
  vector<ComputationalCell> res(static_cast<size_t>(tess.GetPointNo()));
  const Interpolator density_interpolator(id.radius_mid,
					  id.density_list);
  const Interpolator temperature_interpolator(id.radius_mid,
					      id.temperature_list);
  const Interpolator velocity_interpolator(id.radius_list,
					   id.velocity_list);
  map<string,Interpolator*> tracer_intepolators;
  for(map<string,vector<double> >::const_iterator it=
	id.tracers_list.begin();
      it!=id.tracers_list.end(); ++it)
    tracer_intepolators[it->first] = new Interpolator(id.radius_mid,
						      it->second);
  for(size_t i=0;i<res.size();++i){
    res.at(i).density = id.density_list.back();
    res.at(i).velocity = Vector2D(0,0);
    res.at(i).stickers["ghost"] = true;
    for(map<string,Interpolator*>::const_iterator it=
	  tracer_intepolators.begin();
	it!=tracer_intepolators.end();
	++it)
      res.at(i).tracers[it->first] = 0;
    res.at(i).tracers["He4"] = 1;
    res.at(i).pressure = eos.dt2p(res.at(i).density,
				  id.temperature_list.back(),
				  res.at(i).tracers);
    const Vector2D r = tess.GetCellCM(static_cast<int>(i));
    const double radius = abs(r);
    /*
      if(radius<id.radius_list.front() || radius>id.radius_list.back())
      continue;
    */
    if(!cd(r))
      continue;
    res.at(i).stickers["ghost"] = false;
    const double density = density_interpolator(radius);
    const double temperature = temperature_interpolator(radius);
    const double velocity = velocity_interpolator(radius);
    for(map<string,Interpolator*>::const_iterator it=
	  tracer_intepolators.begin();
	it!=tracer_intepolators.end();
	++it)
      res.at(i).tracers[it->first] = (*(it->second))(radius);
    const double pressure = eos.dt2p(density, temperature, res.at(i).tracers);
    res.at(i).density = density;
    res.at(i).pressure = pressure;
    res.at(i).velocity = r*velocity/radius;
  }
  for(map<string,Interpolator*>::iterator it=
	tracer_intepolators.begin();
      it!=tracer_intepolators.end();
      ++it)
    delete it->second;
  return res;
}
예제 #4
0
main()
{
  int i,n,k;
  int quit = 0,choice;
  ElmType key;
  char s[12];
  FILE *f1,*f2;
  Llist *root,*p;

  newLlist(&root);

  while(quit == 0)
    {
      choice = menu();
      switch(choice)
	{

	case 1:  printf("How may people do you want to add? ");
	         scanf("%d",&n);
	         for(i = 0; i < n; i++)
		   { 
		     key = makeData();
		     addLast(&root,key);
		   }
		 rmenu();
		 break;

	case 2:  printList(root);
                 rmenu();
	         break;
	
	case 3:  printf("The position you want to delete: ");
	         scanf("%d",&k);
		 if(k < n && k > 0)
		   delNode(&root,k);
		 else 
		   printf("\nEnter position k(k >0 and k< %d) again.\n",n);
		 rmenu();
		 break;

	case 4:  printf("The position you want to insert: ");
	         scanf("%d",&k);
		 if(k < n && k > 0)
		   {
		     key = makeData();
		     addBefore(&root,k,key);
		   }
		 else 
		   printf("\nEnter position k(k >0 and k<= %d)again.\n",n);
		 rmenu();
		 break;

	case 5:  printf("The number you want to find: ");
	         scanf("%s",s);
		 p = search(root,s);
		 if(p == NULL) printf("This number is n't in the list.\n");
		 else printf(" + Name: %s\n + Email: %s\n",p->key.name,p->key.mail);
		 rmenu();
		 break;
		 
	case 6: f1 = fopen("contact.txt","w");
	        f2 = fopen("contact.dat","wb");
		save_txt(root,f1);
		saveDat(root,f2);
		fclose(f1);
		fclose(f2);
		rmenu();
		break;
	  
	case 7:  LlistFree(root);
	         printf("Have funny times!!\n");
		 quit++;
		 break;
		 
	default: printf("Please choose from 1 to 7.\n");

	}
    }
  return 0;
}