/*! * \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; }
/*! * \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(); } } } }
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; }