Esempio n. 1
0
/*!
 * \brief AbstractAnimationWindow::loadVisualization
 * loads the data and the xml scene description
 * \return
 */
bool AbstractAnimationWindow::loadVisualization()
{
  VisType visType = VisType::NONE;
  // Get visualization type.
  if (isFMU(mFileName)) {
    visType = VisType::FMU;
  } else if (isMAT(mFileName)) {
    visType = VisType::MAT;
  } else if (isCSV(mFileName)) {
    visType = VisType::CSV;
  } else {
    MessagesWidget::instance()->addGUIMessage(MessageItem(MessageItem::Modelica, "", false, 0, 0, 0, 0, tr("Unknown visualization type."),
                                                          Helper::scriptingKind, Helper::errorLevel));
    return false;
  }
  //load the XML File, build osgTree, get initial values for the shapes
  bool xmlExists = checkForXMLFile(mFileName, mPathName);
  if (!xmlExists) {
    QString msg = tr("Could not find the visual XML file %1.").arg(QString(assembleXMLFileName(mFileName, mPathName).c_str()));
    MessagesWidget::instance()->addGUIMessage(MessageItem(MessageItem::Modelica, "", false, 0, 0, 0, 0, msg, Helper::scriptingKind,
                                                          Helper::errorLevel));
    return false;
  } else {
    //init visualizer
    if (visType == VisType::MAT) {
      mpVisualizer = new VisualizerMAT(mFileName, mPathName);
    } else if (visType == VisType::CSV) {
      mpVisualizer = new VisualizerCSV(mFileName, mPathName);
    } else if (visType == VisType::FMU) {
      mpVisualizer = new VisualizerFMU(mFileName, mPathName);
    } else {
      QString msg = tr("Could not init %1 %2.").arg(QString(mPathName.c_str())).arg(QString(mFileName.c_str()));
      MessagesWidget::instance()->addGUIMessage(MessageItem(MessageItem::Modelica, "", false, 0, 0, 0, 0, msg, Helper::scriptingKind,
                                                            Helper::errorLevel));
      return false;
    }
    connect(mpVisualizer->getTimeManager()->getUpdateSceneTimer(), SIGNAL(timeout()), SLOT(updateScene()));
    mpVisualizer->initData();
    mpVisualizer->setUpScene();
    mpVisualizer->initVisualization();
    //add scene for the chosen visualization
    mpViewerWidget->getSceneView()->setSceneData(mpVisualizer->getOMVisScene()->getScene().getRootNode());
  }
  //add window title
  setWindowTitle(QString::fromStdString(mFileName));
  //open settings dialog for FMU simulation
  if (visType == VisType::FMU) {
    openFMUSettingsDialog(dynamic_cast<VisualizerFMU*>(mpVisualizer));
  }
  return true;
}
Esempio n. 2
0
/*!
 * \brief AbstractAnimationWindow::openAnimationFile
 * \param fileName
 */
void AbstractAnimationWindow::openAnimationFile(QString fileName, bool stashCamera)
{
  std::string file = fileName.toStdString();
  if (file.compare("")) {
    std::size_t pos = file.find_last_of("/\\");
    mPathName = file.substr(0, pos + 1);
    mFileName = file.substr(pos + 1, file.length());
    //std::cout<<"file "<<mFileName<<"   path "<<mPathName<<std::endl;
    if (loadVisualization()) {
      // start the widgets
      mpAnimationInitializeAction->setEnabled(true);
      mpAnimationPlayAction->setEnabled(true);
      mpAnimationPauseAction->setEnabled(true);
      mpAnimationSlider->setEnabled(true);
      bool state = mpAnimationSlider->blockSignals(true);
      mpAnimationSlider->setValue(0);
      mpAnimationSlider->blockSignals(state);
      mpSpeedComboBox->setEnabled(true);
      mpTimeTextBox->setEnabled(true);
      mpTimeTextBox->setText(QString::number(mpVisualizer->getTimeManager()->getStartTime()));
      /* Only use isometric view as default for csv file type.
       * Otherwise use side view as default which suits better for Modelica models.
       */
      if (isCSV(mFileName)) {
        mpPerspectiveDropDownBox->setCurrentIndex(0);
        cameraPositionIsometric();
      } else {
        mpPerspectiveDropDownBox->setCurrentIndex(1);
        cameraPositionSide();
      }

      if(stashCamera && !mCameraInitialized) {         // mCameraInitialized is used to make sure the view is never stashed
        mCameraInitialized = true;      // before the camera is initialized the first time
        stashView();
      }
    }
  }
}
Esempio n. 3
0
int main()
{
    OZELLIK_MIN *fMin;
    OZELLIK_MAX *fMax;


    int i,j,k,x,y;
    int degerlerMin_MaxBoyut;
    int indis;
    double oklidDegeri;

    int r ;
    int argSayisi = 0;
    char dosyaAdiOkuma[100];
    char dosyaAdiYazma[] = "features.arff";
    char tmpSatir[LINESIZE];
    char ayrac;
    int kelimeUzunlugu;

    double **degerler;
    double **oklids;

    int degerSayisi;
    double tmpDeger = 0.0;
    double dDonustur = 1.0;
    double isaret = 1.0;


    int sure;
    int frekans;
    int atlamaOrani;
    int labelType = 0;

    char *ozellikler[] = {"MINRED","MAXRED","MININC","MAXINC","MINVAL","MAXVAL", "RANGE",
                          "ARTMEAN","HARMEAN", "QUADMEAN", "MOD", "MEDIAN", "STD","VAR", "IEARTMEAN", "IEHARMEAN",
                          "IEQUADMEAN", "COV"
                         };

    // char *labels[] = {"walking","car","bus","tram","metro1","metro2","marmaray","metrobus","bicycle","ferry","n"};
    char *labels[] = {"walking_walking","minibus_sitting","minibus_standing","car_car","bus_sitting","tram_sitting","metroH_sitting","metroK_sitting","marmaray_sitting","metrobus_sitting","ferry_sitting","bus_standing","tram_standing","metroH_standing","metroK_standing","marmaray_standing","metrobus_standing","ferry_standing"};

    char *labels1[]= {"walking","minibus","car","bus","tram","metro","metrobus","ferry"};

    char label[100];
    char alan[100];
    int kacinciKelime;
    int yazildi=0;
    int ozellikSayisi = 18;
    int labelSayisi = 18;
    int labelSayisi1= 8;

    FILE *fRead;
    FILE *fWrite;

    //fRead = fopen(dosyaAdiOkuma,"r");
    //dosyaErr(fRead);

    //printf("\nDosya Adi: ");
    //scanf("%s",dosyaAdiYazma);

    printf("\nAzaltilmis labellar?(1 - evet, 0 - hayir) ");
    scanf("%d",&labelType);

    fWrite = fopen(dosyaAdiYazma,"w");
    dosyaErr(fWrite);

    fprintf(fWrite,"@RELATION vehicle_classification\n\n");


    //  fputs(tmpSatir,fWrite);

    DIR *dp;
    struct dirent *ep;

    dp = opendir ("./");
    if (dp == NULL)
    {
        exit(1);
    }
    while ((ep = readdir (dp)))
    {
        // printf("\n%d,",ep);
        strcpy(dosyaAdiOkuma,ep->d_name);
        if (isCSV(dosyaAdiOkuma))
        {
            labelBul(dosyaAdiOkuma,label,labelType);
            fRead = fopen(dosyaAdiOkuma,"r");
            //printf("Dosya isleniyor: %s ...\n",dosyaAdiOkuma);
            fgets(tmpSatir,LINESIZE,fRead);

            i = 0;

            if(!yazildi)
            {


                while(tmpSatir[i])
                {

                    if(tmpSatir[i] == ',' || tmpSatir[i] == ';')
                    {

                        argSayisi++;
                        //printf("argSayisi= %d\n",argSayisi);
                        ayrac = tmpSatir[i];
                    }
                    i++;
                }
                i = 1;
                j= 0;
                /**
                 Bir azaltma sebebim sondaki iki kolonun ölçülecek bir yanı olmaması.
                 */
                argSayisi--;
                i=0;
                kacinciKelime=0;
                k=0;
                kelimeUzunlugu=0;
                while(kacinciKelime<argSayisi)
                {
                    if(tmpSatir[i] != ayrac)
                    {
                        alan[kelimeUzunlugu] = tmpSatir[i];
                        printf("%c",alan[kelimeUzunlugu]);
                        kelimeUzunlugu++;
                    }
                    else
                    {
                        alan[kelimeUzunlugu] = '\0';
                        printf("\n");
                        for(k=0; k<ozellikSayisi; k++)
                        {
                            fprintf(fWrite,"@ATTRIBUTE \"%s_%s\" NUMERIC\n",alan,ozellikler[k]);
                        }
                        kelimeUzunlugu=0;
                        kacinciKelime++;
                    }
                    i++;
                }

                for(k=0; k<ozellikSayisi; k++)
                {
                    fprintf(fWrite,"@ATTRIBUTE \"ACC_%s\" NUMERIC\n",ozellikler[k]);
                }

                for(k=0; k<ozellikSayisi; k++)
                {
                    fprintf(fWrite,"@ATTRIBUTE \"GYRO_%s\" NUMERIC\n",ozellikler[k]);
                }
                for(k=0; k<ozellikSayisi; k++)
                {
                    fprintf(fWrite,"@ATTRIBUTE \"MAG_%s\" NUMERIC\n",ozellikler[k]);
                }

                fprintf(fWrite,"@ATTRIBUTE label {");
                labelSayisi--;
                if(labelType == 0)
                {
                    for(i=0; i<labelSayisi-1; i++)
                    {
                        fprintf(fWrite,"%s,",labels[i]);
                    }
                    fprintf(fWrite,"%s",labels[i]);
                }
                else if (labelType == 1)
                {
                    for(i=0; i<labelSayisi1; i++)
                    {
                        fprintf(fWrite,"%s,",labels1[i]);
                    }
                }

                fprintf(fWrite,"}\n\n@DATA\n");


                printf("Arg Sayisi= %d\n",argSayisi);


                printf("\nFrekans Nedir? (hz) ");
                scanf("%d",&frekans);

                printf("\nNe Kadarlik Zaman Araliginin Ozelligini Cikarmak İstersiniz? (milisaniye cinsinden) ");
                scanf("%d",&sure);

                printf("\nAtlama oranini yuzde olarak giriniz(Tam Sayi) ");
                scanf("%d",&atlamaOrani);


                kontrolAdet = (sure*frekans)/1000;
                atlamaMik = (kontrolAdet*atlamaOrani)/100;
                //   ozellikSayisi = (degerSayisi-kontrolAdet)/atlamaMik + 1;
                degerlerMin_MaxBoyut = argSayisi + oklidBoyutu;
                fMax = (OZELLIK_MAX *) malloc(degerlerMin_MaxBoyut*sizeof(OZELLIK_MAX));
                for(i=0; i<degerlerMin_MaxBoyut; i++)
                {
                    fMax[i].min = MAX_UC;
                    fMax[i].max = MAX_UC;
                    fMax[i].ranj = MAX_UC;
                    fMax[i].minInc = MAX_UC;
                    fMax[i].maxInc = MAX_UC;
                    fMax[i].minRed = MAX_UC;
                    fMax[i].maxRed = MAX_UC;
                    fMax[i].median = MAX_UC;
                    fMax[i].mod = MAX_UC;
                    fMax[i].aritmetikOrtalama = MAX_UC;
                    fMax[i].harmonikOrtalama = MAX_UC;
                    fMax[i].kuadratikOrtalama = MAX_UC;
                    fMax[i].stdSapma = MAX_UC;
                    fMax[i].varyans = MAX_UC;
                    fMax[i].anlikAritmetikOrt = MAX_UC;
                    fMax[i].anlikHarmonikOrt = MAX_UC;
                    fMax[i].anlikKuadratikOrt = MAX_UC;
                    fMax[i].varyasyonKatSayi = MAX_UC;
                }

                fMin = (OZELLIK_MIN *) malloc(degerlerMin_MaxBoyut*sizeof(OZELLIK_MIN));
                for(i=0; i<degerlerMin_MaxBoyut; i++)
                {
                    fMin[i].min = MIN_UC;
                    fMin[i].max = MIN_UC;
                    fMin[i].ranj = MIN_UC;
                    fMin[i].minInc = MIN_UC;
                    fMin[i].maxInc = MIN_UC;
                    fMin[i].minRed = MIN_UC;
                    fMin[i].maxRed = MIN_UC;
                    fMin[i].median = MIN_UC;
                    fMin[i].mod = MIN_UC;
                    fMin[i].aritmetikOrtalama = MIN_UC;
                    fMin[i].harmonikOrtalama = MIN_UC;
                    fMin[i].kuadratikOrtalama = MIN_UC;
                    fMin[i].stdSapma = MIN_UC;
                    fMin[i].varyans = MIN_UC;
                    fMin[i].anlikAritmetikOrt = MIN_UC;
                    fMin[i].anlikHarmonikOrt = MIN_UC;
                    fMin[i].anlikKuadratikOrt = MIN_UC;
                    fMin[i].varyasyonKatSayi = MIN_UC;
                }


                oklids = (double**) malloc(oklidBoyutu*sizeof(double*));
                doubleMErr(oklids);
                for(i=0; i<oklidBoyutu; i++)
                {
                    oklids[i] = (double*) malloc(kontrolAdet * sizeof(double));
                    doubleDErr(oklids[i]);
                }

                degerler = (double**) malloc(argSayisi * sizeof(double*));
                doubleMErr(degerler);
                for(i=0; i<argSayisi; i++)
                {
                    degerler[i] = (double*) malloc(kontrolAdet * sizeof(double));
                    doubleDErr(degerler[i]);
                }

                yazildi=1;
            }

            degerSayisi = 0;
            r = 0;


            while(fgets(tmpSatir,LINESIZE,fRead))
            {

                if(degerSayisi >= kontrolAdet)
                {
                    degerSayisi = kontrolAdet - atlamaMik;

                    for(x=0; x<oklidBoyutu; x++)
                    {
                        indis = x*3;

                        for(y=0; y<kontrolAdet; y++)
                        {
                            oklidDegeri = degerler[indis][y]*degerler[indis][y] + degerler[indis+1][y]*degerler[indis+1][y] + degerler[indis+2][y]*degerler[indis+2][y];
                            oklids[x][y] = sqrt(oklidDegeri);
                        }
                    }


                    islem(degerler,r,argSayisi,ayrac,&fWrite,fMin,fMax);
                    islem(oklids,r,oklidBoyutu,ayrac,&fWrite,(fMin+argSayisi),(fMax+argSayisi));

                    fprintf(fWrite,"%s",label);
                    putc('\n',fWrite);


                }

                j=0;
                for(i=0; i<argSayisi; i++)
                {
                    isaret = 1.0;
                    tmpDeger = 0.0;
                    dDonustur = 1.0;
                    if(tmpSatir[j]== '-')
                    {
                        isaret = -1.0;
                        j++;
                    }

                    while(tmpSatir[j] != ayrac && tmpSatir[j] != '.')
                    {

                        tmpDeger *= 10;
                        tmpDeger += (tmpSatir[j] - '0');
                        j++;
                    }
                    if(tmpSatir[j] != ayrac)
                        j++;
                    while(tmpSatir[j] != ayrac)
                    {
                        dDonustur *= 10;
                        tmpDeger = tmpDeger + (tmpSatir[j] - '0')/dDonustur;
                        j++;
                    }
                    // printf("%f,",tmpDeger*isaret);
                    degerler[i][r] = tmpDeger*isaret;

                    j++;

                }
                // printf("\n");
                r++;
                r %= kontrolAdet;
                degerSayisi++;
            }
            //printf("\n\n");

            fclose(fRead);
        }
    }



    for(i=0; i<argSayisi; i++)
    {
        free(degerler[i]);

    }


    free(degerler);


    fclose(fWrite);

    for(i=0; i<degerlerMin_MaxBoyut; i++)
    {
        printf("\n%f,",fMin[i].min);

    }

    free(fMin);
    free(fMax);



    return 0;
}