Beispiel #1
0
        private static int selectHistory(NyARSurfaceFeatures candidate, NyARFeatureCoordPtrList i_prev_log)
        {
            int j;

            for (int i = 0; i < i_prev_log.getLength(); i++)
            {
                NyARNftFsetFile.NyAR2FeatureCoord prev_item = i_prev_log.getItem(i);
                for (j = 0; j < candidate.getLength(); j++)
                {
                    NyARSurfaceFeatureItem item = candidate.getItem(j);
                    // 過去ログでも検出した形跡があったものを選択する。
                    if (prev_item == item.ref_feature)
                    {
                        return(j);
                    }
                }
            }
            //残ってない
            if (candidate.getLength() == 0)
            {
                return(-1);
            }
            //適当に返す
            int k = (int)((double)candidate.getLength() * _rand.rand() / (RepeatedRandomizer.RAND_MAX + 1.0f));

            for (int i = j = 0; i < candidate.getLength(); i++)
            {
                if (j == k)
                {
                    return(i);
                }
                j++;
            }
            return(-1);
        }
Beispiel #2
0
        /**
         * インスタンスの状態をリセットする。
         */

        /**
         * o_posの状況に対応して、candidateから候補IDを選択します。
         * @param candidate
         * @param prelog
         * @param o_pos
         * @param xsize
         * @param ysize
         * @return
         */
        public int ar2SelectTemplate(NyARSurfaceFeatures candidate, NyARFeatureCoordPtrList prelog, NyARSurfaceFeaturesPtr o_pos, NyARIntSize i_screen_size)
        {
            switch (o_pos.getLength())
            {
            case 0:
                return(select0(candidate, i_screen_size.w, i_screen_size.h));

            case 1:
                return(select1(candidate, i_screen_size.w, i_screen_size.h, o_pos.getItem(0)));

            case 2:
                return(select2(candidate, i_screen_size.w, i_screen_size.h, o_pos.getItem(0), o_pos.getItem(1)));

            case 3:
                return(select3(candidate, i_screen_size.w, i_screen_size.h, o_pos.getItem(0), o_pos.getItem(1), o_pos.getItem(2)));

            default:
                return(selectHistory(candidate, prelog));
            }
        }