Subversion Repositories AndroidProjects

Rev

Blame | Last modification | View Log | RSS feed

package jp.nyatla.nyartoolkit.core;

import jp.nyatla.nyartoolkit.NyARException;

public class NyARSquareList extends NyARMarkerList
{
    private final NyARSquare[] square_array;
    private int square_array_num;
    public NyARSquareList(int i_number_of_holder)
    {
        super(new NyARSquare[i_number_of_holder]);
        //マーカーホルダに実体を割り当てる。
        for(int i=0;i<this.marker_holder.length;i++){
            this.marker_holder[i]=new NyARSquare();
        }
        this.square_array=new NyARSquare[i_number_of_holder];
        this.square_array_num=0;
    }
    /**
     * マーカーアレイをフィルタして、square_arrayを更新する。
     * [[この関数はマーカー検出処理と密接に関係する関数です。
     * NyARDetectSquareクラス以外から呼び出さないで下さい。]]
     */

    public final void updateSquareArray(NyARParam i_param) throws NyARException
    {
        NyARSquare square;
        int j=0;
        for (int i = 0; i <this.marker_array_num; i++){
//          double[][]  line    =new double[4][3];
//          double[][]  vertex  =new double[4][2];
            //NyARMarker marker=detect.getMarker(i);
            square=(NyARSquare)this.marker_array[i];
            //・・・線の検出??
            if (!square.getLine(i_param))
            {
                continue;
            }
            this.square_array[j]=square;
//ここで計算するのは良くないと思うんだ       
//              marker_infoL[j].id  = id.get();
//              marker_infoL[j].dir = dir.get();
//              marker_infoL[j].cf  = cf.get();
            j++;
        }
        this.square_array_num=j;
    }
    /**
     * スクエア配列に格納されている要素数を返します。
     * @return
     */

    public final int getSquareNum()
    {
        return  this.square_array_num;
    }
    /**
     * スクエア配列の要素を返します。
     * スクエア配列はマーカーアレイをさらにフィルタした結果です。
     * マーカーアレイの部分集合になっている点に注意してください。
     * @param i_index
     * @return
     * @throws NyARException
     */

    public final NyARSquare getSquare(int i_index) throws NyARException
    {
        if(i_index>=this.square_array_num){
            throw new NyARException();
        }
        return this.square_array[i_index];
    }
}