QVector<golographicData> generateImages(const generatingData &data, mslLoader::OBJloader &loader, const std::string &folder) { Q_UNUSED (folder); cubPair cubs = buildCub(loader,data.lengthOfShip,data.numberOfUnit); std::vector<Cuboid> cubusCubus; Cuboid cubBig; QVector<golographicData> imagesData; for(double XY_plane = data.XY_angleMin; XY_plane < data.XY_angleMax; XY_plane += data.XY_angleStep) { for(double XZ_plane = data.XZ_angleMin; XZ_plane <= data.XZ_angleMax; XZ_plane += data.XZ_angleStep) { cubusCubus = cubs.cubs; cubBig = cubs.initialCub; cubBig.rotateInSpace(mslMesh::make_point3D(XZ_plane,XY_plane,0.0)); std::vector<Cuboid>::iterator cubusCubusIter = cubusCubus.begin(); for(; cubusCubusIter != cubusCubus.end(); ++cubusCubusIter) { (*cubusCubusIter).rotateInSpace(mslMesh::make_point3D(XZ_plane,XY_plane,0.0)); } mslMesh::point3Ddouble bufPoint = cubBig.getVisionDirection(); mslMesh::mesh3D bufMesh = mslMesh::visibleMesh(bufPoint,loader.getMesh()); std::vector<unsigned char> cIm = createImageMatrix(cubusCubus,bufMesh); std::vector<unsigned char> image = createImage(cIm); unsigned int imageSize = static_cast<unsigned int>(sqrt(static_cast<double>(image.size()))); golographicData buf; buf.XY_angle = static_cast<unsigned int>(XY_plane); buf.XZ_angle = static_cast<unsigned int>(XZ_plane); buf.rowNumber = buf.columnNumber = imageSize; buf.numberOfUnit = data.numberOfUnit; swap_STDtoQT_vector(buf.data,image); //**** //constDataStruct bufDat; //bufDat.XY_plane = buf.XY_angle; //bufDat.XZ_plane = buf.XZ_angle; //bufDat.imageSize = imageSize; //bufDat.numberOfUnit = data.numberOfUnit; //saveFilePNG(image,createFileNamePNG(bufDat,"c:/image/pix/")); //**** imagesData.push_back(buf); } } return imagesData; }
void glBegin(){ matrix = createImageMatrix(H,W); }
QVector<golographicData> ImageGenerator::generateImages() { /* QProgressDialog * progressD = new QProgressDialog (tr("Creating images..."), tr("&Cancel"), 0, imagesNum); connect (progressD, SIGNAL (canceled()), this, SLOT (prCancel())); progressD->show(); if (progressD->wasCanceled()) { delete progressD; return QVector<golographicData>();//imagesData; } */ cubPair cubs = buildCub(loader,imageData.data.lengthOfShip,imageData.data.numberOfUnit); std::vector<Cuboid> cubusCubus; Cuboid cubBig; QVector<golographicData> imagesData; int value = 0; /* if (progressD->wasCanceled()) { delete progressD; return imagesData; } */ int imagesNum = ((imageData.data.XY_angleMax - imageData.data.XY_angleMin)/imageData.data.XY_angleStep+1) * ((imageData.data.XZ_angleMax - imageData.data.XZ_angleMin)/imageData.data.XZ_angleStep+1 ); emit allImageVal (imagesNum); for(double XY_plane = imageData.data.XY_angleMin; XY_plane <= imageData.data.XY_angleMax; XY_plane += imageData.data.XY_angleStep) { //progressD->update(); for(double XZ_plane = imageData.data.XZ_angleMin; XZ_plane <= imageData.data.XZ_angleMax; XZ_plane += imageData.data.XZ_angleStep) { value++; emit imageVal (value); /* progressD->setValue(value); if (progressD->wasCanceled()) { delete progressD; return imagesData; } */ cubusCubus = cubs.cubs; cubBig = cubs.initialCub; cubBig.rotateInSpace(mslMesh::make_point3D(XZ_plane,XY_plane,0.0)); /* if (progressD->wasCanceled()) { delete progressD; return imagesData; } */ std::vector<Cuboid>::iterator cubusCubusIter = cubusCubus.begin(); for(; cubusCubusIter != cubusCubus.end(); ++cubusCubusIter) { (*cubusCubusIter).rotateInSpace(mslMesh::make_point3D(XZ_plane,XY_plane,0.0)); /* if (progressD->wasCanceled()) { delete progressD; return imagesData; } */ } mslMesh::point3Ddouble bufPoint = cubBig.getVisionDirection(); mslMesh::mesh3D bufMesh = mslMesh::visibleMesh(bufPoint,loader.getMesh()); /* if (progressD->wasCanceled()) { delete progressD; return imagesData; } */ std::vector<unsigned char> cIm = createImageMatrix(cubusCubus,bufMesh); std::vector<unsigned char> image = createImage(cIm); /* if (progressD->wasCanceled()) { delete progressD; return imagesData; } */ unsigned int imageSize = static_cast<unsigned int>(sqrt(static_cast<double>(image.size()))); golographicData buf; buf.XY_angle = static_cast<unsigned int>(XY_plane); buf.XZ_angle = static_cast<unsigned int>(XZ_plane); buf.rowNumber = buf.columnNumber = imageSize; buf.numberOfUnit = imageData.data.numberOfUnit; swap_STDtoQT_vector(buf.data,image); //**** //constDataStruct bufDat; //bufDat.XY_plane = buf.XY_angle; //bufDat.XZ_plane = buf.XZ_angle; //bufDat.imageSize = imageSize; //bufDat.numberOfUnit = imageData.data.numberOfUnit; //saveFilePNG(image,createFileNamePNG(bufDat,"c:/image/pix/")); //**** imagesData.push_back(buf); //value++; } } // progressD->setValue(imagesNum); // delete progressD; return imagesData; }