Exemple #1
0
    /*
     * HoloLensの自己位置をLOGGING_TIMESPAN毎に記録
     * リストに追加
     */
    // Update is called once per frame
    void Update()
    {
        var tapl = new JsonTimeAndPositionLog(transform.position.x, transform.position.z);

        if (DateTime.Now.Subtract(oldTime).Second > LOGGING_TIMESPAN)
        {
            oldTime = DateTime.Now.TimeOfDay;
            jTAPLList.Add(tapl);
        }
    }
Exemple #2
0
    /*
     *データのサンプリング
     * pDataを基準として、タイムスタンプが一致するhDataをサンプリングする
     * サンプリングが失敗したorデータ数が足りない場合はnullを返す
     */
    private List <List <JsonTimeAndPositionLog> > samplingFromHoloLensLogList(List <JsonTimeAndPositionLog> h, List <JsonTimeAndPositionLog> p)
    {
        List <JsonTimeAndPositionLog> logH = new List <JsonTimeAndPositionLog>();
        List <JsonTimeAndPositionLog> logP = new List <JsonTimeAndPositionLog>();

        if (h == null || p == null)
        {
            return(null);
        }
        if (h.Count < CALCULATE_POSITION_NUMBER || p.Count < CALCULATE_POSITION_NUMBER)
        {
            return(null);
        }

        int pastDataNum = 0;

        foreach (JsonTimeAndPositionLog pdata in p)
        {
            List <JsonTimeAndPositionLog> tmp    = new List <JsonTimeAndPositionLog>();
            JsonTimeAndPositionLog        result = null;

            for (int i = pastDataNum; i < h.Count; i++)
            {
                if ((Math.Abs(h[i].mTime.Subtract(pdata.mTime).Seconds) + Math.Abs(h[i].mTime.Subtract(pdata.mTime).Minutes) * 60) < 1.0)
                {
                    tmp.Add(h[i]);
                }
            }
            double difference = 1000;
            foreach (JsonTimeAndPositionLog t in tmp)
            {
                if (Math.Abs(t.mTime.Subtract(pdata.mTime).Milliseconds) < difference)
                {
                    result     = t;
                    difference = Math.Abs(t.mTime.Subtract(pdata.mTime).Milliseconds);
                }
            }
            if (result != null)
            {
                logP.Add(pdata);
                logH.Add(result);
            }
            if (logH.Count >= CALCULATE_POSITION_NUMBER && logP.Count >= CALCULATE_POSITION_NUMBER)
            {
                List <List <JsonTimeAndPositionLog> > res = new List <List <JsonTimeAndPositionLog> >();
                res.Add(logP);
                res.Add(logH);
                return(res);
            }
        }
        return(null);
    }