コード例 #1
0
        float ScoreMove(int j1, int j2, int obs)
        {
            if (j1 == j2)
            {
                float trans = pStay(j1);
                float em = stayDist(obs, j1);
                return log(trans * em);
            }
            else if (j1 + 1 == j2)
            {
                float ps = pStay(j1);
                float pm = (1.0f - ps) * pMerge(j1);
                float trans = 1.0f - ps - pm;

                float em = moveDist(obs, j1);
                return log(trans * em);
            }
            else if (j1 + 2 == j2)
            {
                float ps = pStay(j1);
                float pm = (1.0f - ps) * pMerge(j1);

                if (obs == templateBase(j1))
                    return log(pm);

                else
                    return NEG_INF;
            }

            return NEG_INF;
        }
コード例 #2
0
        float Inc(int i, int j) const
        {
            assert(0 <= j && j < TemplateLength() &&
                   0 <= i && i < ReadLength() );

            float ps = pStay(j);
            float pm = (1.0f - ps) * pMerge(j);
            float trans = 1.0f - ps - pm;

            float em = moveDist(features_.Channel[i], j);
            return log(trans * em);
        }
コード例 #3
0
 float Merge(int i, int j) const
 {
     assert(0 <= j && j < TemplateLength() - 1 &&
            0 <= i && i < ReadLength() );
     if (!(features_.Channel[i] == channelTpl_[j] &&
           features_.Channel[i] == channelTpl_[j + 1]) )
     {
         return -FLT_MAX;
     }
     else
     {
         float ps = pStay(j);
         float pm = (1.0f - ps) * pMerge(j);
         return log(pm);
     }
 }
コード例 #4
0
        float Del(int i, int j) const
        {
            assert(0 <= j && j < TemplateLength() &&
                   0 <= i && i <= ReadLength() );
            if ( (!PinStart() && i == 0) || (!PinEnd() && i == ReadLength()) )
            {
                return 0.0f;
            }
            else
            {
                float ps = pStay(j);
                float pm = (1.0f - ps) * pMerge(j);
                float trans = 1.0f - ps - pm;

                float em = moveDist(0, j);
                return log(trans * em);
            }
        }
コード例 #5
0
bool WldGenericSetup::parse(IniProcessing *setup,
                            PGEString imgPath,
                            uint32_t defaultGrid,
                            WldGenericSetup *merge_with,
                            PGEString *error)
{
    #define pMerge(param, def) (merge_with ? (merge_with->param) : (def))
    #define pMergeMe(param) (merge_with ? (merge_with->param) : (param))

    int errCode = PGE_ImageInfo::ERR_OK;
    PGEString section;
    /*************Buffers*********************/
    uint32_t    w = 0,
                h = 0;

    /*************Buffers*********************/
    if(!setup)
    {
        if(error)
            *error = "setup QSettings is null!";

        return false;
    }

    section     = StdToPGEString(setup->group());
    setup->read("group",    group,      pMergeMe(group));
    setup->read("category", category,   pMergeMe(category));
    setup->read("description", description, pMerge(description, ""));

    setup->read("image",    image_n,    pMerge(image_n, ""));
    if(!merge_with && !PGE_ImageInfo::getImageSize(imgPath + image_n, &w, &h, &errCode))
    {
        if(error)
        {
            switch(errCode)
            {
            case PGE_ImageInfo::ERR_UNSUPPORTED_FILETYPE:
                *error = "Unsupported or corrupted file format: " + imgPath + image_n;
                break;

            case PGE_ImageInfo::ERR_NOT_EXISTS:
                *error = "image file is not exist: " + imgPath + image_n;
                break;

            case PGE_ImageInfo::ERR_CANT_OPEN:
                *error = "Can't open image file: " + imgPath + image_n;
                break;
            }
        }

        return false;
    }
    assert(merge_with || ((w > 0) && (h > 0) && "Width or height of image has zero or negative value!"));
    mask_n  =    PGE_ImageInfo::getMaskName(image_n);

    setup->read("icon", icon_n, pMerge(icon_n, ""));

    setup->read("grid",         grid,       pMerge(grid, defaultGrid));
    setup->read("animated",     animated,   pMerge(animated, 0));
    setup->read("frames",       frames,     pMerge(frames, 1));
    NumberLimiter::apply(frames, uint32_t(1u));
    setup->read("frame-speed",  framespeed, pMerge(framespeed, 175));
    NumberLimiter::apply(framespeed, uint32_t(1u));
    frame_h = animated ? Maths::uRound(double(h) / double(frames)) : h;
    NumberLimiter::apply(frame_h, uint32_t(0u));

    setup->read("display-frame",    display_frame,      pMerge(display_frame, 0));
    setup->read("map3d-vertical",   map3d_vertical,     pMerge(map3d_vertical, false));
    setup->read("map3d-stackables", map3d_stackables,   pMerge(map3d_stackables, map3d_stackables));

    //Rows and cols for table-like element sets
    setup->read("row", row, pMerge(row, 0));
    setup->read("col", col, pMerge(col, 0));

    #undef pMerge
    #undef pMergeMe
    return true;
}