private void SetSourceData()
 {
     for (int i = 0; i < FramePointsCount; i++)
     {
         short depthVal = BitConverter.ToInt16(pointData, i * PointDataStride);
         byte  r        = pointData[i * PointDataStride + 2];
         byte  g        = pointData[i * PointDataStride + 3];
         byte  b        = pointData[i * PointDataStride + 4];
         rawPointsArray[i] = new BufferPoint()
         {
             DepthVal = depthVal, R = r, G = g, B = b
         };
     }
     rawPointsBuffer.SetData(rawPointsArray);
 }
Beispiel #2
0
    private ComputeBuffer GetDataBuffer(List <TerrorismDataPoint> sourceData)
    {
        long          start = sourceData.Min(item => item.Time.Ticks);
        long          end   = sourceData.Max(item => item.Time.Ticks);
        ComputeBuffer ret   = new ComputeBuffer(sourceData.Count, DataBufferStride);

        BufferPoint[] bufferData = new BufferPoint[sourceData.Count];
        for (int i = 0; i < sourceData.Count; i++)
        {
            BufferPoint newPoint = ToBufferPoint(sourceData[i], start, end);
            bufferData[i] = newPoint;
        }
        ret.SetData(bufferData);
        return(ret);
    }
Beispiel #3
0
        public override IEnumerable<IO.VolkeTest.VolkeEyeSensorMessage> ApplyFilter(IEnumerable<IO.VolkeTest.VolkeEyeSensorMessage> eyeMovements)
        {
            LookPoint.Filters.WeightOOTriangular filterR = new LookPoint.Filters.WeightOOTriangular();
            LookPoint.Filters.WeightOOTriangular filterL = new LookPoint.Filters.WeightOOTriangular();

            var buffer = new Queue<BufferPoint>();
            BufferPoint lastPoint = BufferPoint.Empty;
            foreach (var eyeTracking in eyeMovements)
            {
                var point = new BufferPoint(eyeTracking.LeftPosition, eyeTracking.RightPosition, (int)eyeTracking.Timestamp);

                //if (point.HasEmpty())
                //{
                //    buffer.Enqueue(point);
                //    continue;
                //}

                if (buffer.Count > 0)
                {
                    int intervalSize = buffer.Count;
                    var start = lastPoint == BufferPoint.Empty ? point : lastPoint;
                    var next = lastPoint == BufferPoint.Empty ? point : lastPoint;

                    int idx = 0;
                    while (buffer.Count > 0)
                    {
                        var midPoint = buffer.Dequeue();
                        Correct(midPoint, start, next, intervalSize, ++idx);
                        yield return point.ToSensorMessage(filterL, filterR);
                    }
                }

                yield return point.ToSensorMessage(filterL, filterR);
                lastPoint = point;
            }
        }
Beispiel #4
0
 private void Correct(BufferPoint point, BufferPoint last, BufferPoint next, int intervalSize, int index)
 {
     point.Left = Correct(point.Left, last.Left, next.Left, intervalSize, index);
     point.Right = Correct(point.Right, last.Right, next.Right, intervalSize, index);
 }