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); }
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); }
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; } }
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); }