Exemple #1
0
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;
}
Exemple #2
0
void glBegin(){
  matrix = createImageMatrix(H,W);
}
Exemple #3
0
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;
}