Ejemplo n.º 1
0
void TSC_value::streamin_withtype(QBinTagReader &reader)
{
	QString datatypename;
	reader.read_shortstring(datatypename);
	TSC_datatype *dtpe=GetTSCenv().G_datatype(datatypename);
	if (dtpe==NULL) throw QError(TFormatString(_text("Unrecognised data type ^1"),datatypename));
	createtype(dtpe);
	streamin(reader);
}
Ejemplo n.º 2
0
QString TransformsGui::getCurrentChainConf()
{
//    this->setEnabled(false);

    TransformChain list = getCurrentTransformChain();
    QString ret;
    QXmlStreamWriter streamin(&ret);

    transformFactory->saveConfToXML(list, &streamin);

//    this->setEnabled(true);

    return ret;
}
Ejemplo n.º 3
0
int main(int argc,char ** argv)
{

  TApplication application("app",&argc,argv);

  Signals::SignalSet signals("Meine Signale");
  Signals::Signal a(3.125);
  Signals::Signal b(3.125);
  a.SetSignalLength(200);
  b.SetSignalLength(200);
  a.CreateHeaviside(100,-1,1);
  b.CreateHeaviside(150,-2,2);

  unsigned int index=signals.SetSignal(-1,"signal",a);
  signals.SetSignal(index,"b",b);

  Tools::ASCIIOutStream streamout("test.sig");
  streamout<<signals;
  
  Tools::ASCIIInStream streamin("test.sig");
  Signals::SignalSet sigtest("Test");
  streamin>>sigtest;
  Signals::Signal& ra=sigtest.GetSignal(0,"signal");
  Signals::Signal& rb=sigtest.GetSignal(0,"b");

  TCanvas * canvas1=new TCanvas;
  a.Graph()->Draw("AL*");
  canvas1->Update();

  TCanvas * canvas2=new TCanvas;
  b.Graph()->Draw("AL*");
  canvas2->Update();

  application.Run(kTRUE);

  return 0;
}
Ejemplo n.º 4
0
MovimientosFromFile::MovimientosFromFile(string filename): AlgDesplazamientoMallaTriangulos(){
    N = 11;
    sizes = new int[N];
    nodes = new int*[N];
    values = new float**[N];


    ifstream in(filename.c_str());
	char line[MAXLINE];

    int nodo;
	float x,y,z;

    int count = 0;
    while(true){
        in.getline(line,MAXLINE);
        string str(line);
        if(str.find("ANIMATION UNITS LIST") != string::npos){
            in.getline(line, MAXLINE);
            break;
        }
        if(in.fail()){
            in.close();
            return;
        }
    }

    while(true){
        in.getline(line,MAXLINE);
        string str(line);
		if (in.fail())
            break;
        if(str.find("#") == 0){

            in.getline(line,MAXLINE);

            if(line[0] == '#' || line[1] == '#'){
                break;
            }

            stringstream streamin(line);
            int size;
            streamin >> size;
            sizes[count] = size;

            nodes[count] = new int[size];
            values[count] = new float*[size];

            for(int i = 0; i< size; ++i){
                values[count][i] = new float[3];
                in.getline(line,MAXLINE);
                string number(line);
                stringstream streamin(line);

                streamin >> nodo;
                streamin >> x;
                streamin >> y;
                streamin >> z;
                nodes[count][i] = nodo;
                values[count][i][0] = x;
                values[count][i][1] = y;
                values[count][i][2] = z;
            }
            count++;
        }
    }
Ejemplo n.º 5
0
Malla* GeneraFromComsol_1::aplicar() {
	int n_triangulos = 0, n_cuadrilateros = 0; // cantidad de caras de tres y cuatro lados
	ifstream in(archivo.c_str());
	char line[MAXLINE];
	in.getline(line,MAXLINE);

    string cx,cy,cz;
	float x,y,z;

    int num_puntos, num_caras;

    num_puntos=0;
    Nodos *nodos = new Nodos();
    Nodo *nodo;

    while(true) {
        in.getline(line,MAXLINE);
		stringstream streamin(line);
		if (line[0]=='%')
			break;

		streamin >> x;
		streamin >> y;
		streamin >> z;

        nodo = new Nodo(Punto(x,y,z));
        nodos->addNodo(nodo);
        num_puntos++;
    }


    map<pair<int,int>,int> ind_arcos;
    map<pair<int,int>,int>::iterator iter1;
	map<pair<int,int>,int>::iterator iter2;
    vector<int> indice_puntos;
    vector<int> indice_arcos;
    Arcos *arcos = new Arcos();
    Caras *caras = new Caras();
    Cara *c;
    int indice;

    int indices[4], n_lados;
    num_caras=0;
    while(true) {
        indices[3]=-1;
		in.getline(line,MAXLINE);
		if (in.fail() || line[0]=='%')
            break;
		stringstream streamin(line);
		for(int i=0; i<4; i++)
            streamin >> indices[i];

        if(indices[3] == -1) {
        	n_triangulos++;
            n_lados = 3;
        }
        else {
        	n_cuadrilateros++;
            n_lados = 4;
        }

        //Nota: Por bug en los archivos de entrada, debo invertir el orden para que las normales queden bien.
        //for(int i=n_lados-1; i>=0; i--) // por el bug
        for(int i=0; i<n_lados; i++) // así debiera ser
            indice_puntos.push_back(indices[i]-1);

        for(int j=0; j<n_lados; j++) {
            int ind1 = indice_puntos[j];
            int ind2 = indice_puntos[int(fmod(j+1,n_lados))];
            pair<int,int> pr1(ind1,ind2);
			pair<int,int> pr2(ind2,ind1);
            iter1 = ind_arcos.find(pr1);
			iter2 = ind_arcos.find(pr2);
            if(iter1 != ind_arcos.end())
                indice_arcos.push_back(iter1->second);
            else if(iter2 != ind_arcos.end())
                indice_arcos.push_back(iter2->second);
            else {
                indice = arcos->addArco(new Arco(ind1,ind2));
                indice_arcos.push_back(indice);
                ind_arcos.insert(make_pair(pr1,indice));
                nodos->addArcoNodo(ind1,indice);
                nodos->addArcoNodo(ind2,indice);
            }
        }
        if(n_lados == 3)
            c = new Triangulo(indice_puntos,indice_arcos);
        else if(n_lados == 4)
            c = new Cuadrilatero(indice_puntos,indice_arcos);
        else
            c = new Cara(indice_puntos,indice_arcos);

        int ind_cara = caras->addCara(c);
        num_caras++;
        for(int j=0; j<n_lados; j++) {
            arcos->setCaraArco(indice_arcos[j],ind_cara);
            nodos->addCaraNodo(indice_puntos[j],ind_cara);
        }
        indice_puntos.clear();
        indice_arcos.clear();
    }

	Malla *malla = 0;
    if(n_cuadrilateros == 0)
    	malla = new MallaTriangulos(nodos,arcos,caras);
	else if(n_triangulos == 0)
		malla = new MallaCuadrilateros(nodos,arcos,caras);
	else
		malla = new Malla(nodos,arcos,caras);
	malla->setConcentracionTodos(1.0);
    malla->setConcentracionMax(1.0);
    malla->setConcentracionMin(0.0);
    malla->setNormales();

	in.close();

	//Chequeamos consistencia topologica.
	int V=malla->getNumNodos();
	int E=malla->getNumArcos();
	int F=malla->getNumCaras();
	cout << "Numero de nodos=" << V << endl;
	cout << "Numero de arcos=" << E << endl;
	cout << "Numero de caras=" << F << endl;
	if (V-E+F==2 || V-E+F==0)
		cout << "La malla es consistente. Cumple la formula de Euler: V-E+F=2" << endl;
	else
		cout << "Atencion, la malla no es consistente. No cumple la formula de Euler: V-E+F=" << V-E+F << " y deberia ser V-E+F=2" << endl;

    assert(malla->checkMalla(true) >= 0);
    cout << endl;
    return malla;
}