Example #1
0
 private int InsertPoint(int pi, Experiment exp, DateTime start, DateTime end, Segment seg)
 {
     for (; pi < MoveData.Length; ++pi)
     {
         if (!TimePoint.IsPoint(MoveData[pi]))
         {
             continue;
         }
         TimePoint tp = new TimePoint(MoveData[pi]);
         if (tp.Time >= start && tp.Time <= end)
         {
             if (tp.Position.X != 0 && tp.Position.Y != 0)
             {
                 seg.Points.Add(tp);
                 exp.MaxX = Math.Max(exp.MaxX, tp.Position.X);
                 exp.MinX = Math.Min(exp.MinX, tp.Position.X);
                 exp.MaxY = Math.Max(exp.MaxY, tp.Position.Y);
             }
         }
         else if (tp.Time > end)
         {
             break;
         }
     }
     return pi;
 }
Example #2
0
 private void InssertWave(int[] ti, Experiment exp, DateTime start, DateTime end, Segment seg)
 {
     for (int i = 0; i < this.ChannelCnt; ++i)
     {
         for (; ti[i] < ChannelTime[i].Count; ++ti[i])
         {
             DateTime tmp = ChannelTime[i][ti[i]];
             if (tmp >= start && tmp <= end)
             {
                 seg.WaveList[i].Add(tmp);
             }
             else if (tmp > end)
             {
                 break;
             }
         }
         exp.MaxWaveCnt[i] = Math.Max(exp.MaxWaveCnt[i], seg.WaveList[i].Count);
     }
 }
Example #3
0
 private void GenerateSegment()
 {
     int pi = 0;
     int[] ti = new int[ChannelCnt];
     foreach (Experiment exp in Experiments)
     {
         exp.ChannelCnt = this.ChannelCnt;
         exp.MaxWaveCnt = new int[this.ChannelCnt];
         exp.ChannelTag = this.ChannelTag;
         foreach (Trail t in exp.Trils)
         {
             DateTime start, end;
             for (start = t.StartTime; start < t.EndTime; start = end)
             {
                 end = start.AddMilliseconds(Parameters.SegmentLength) < t.EndTime ? start.AddMilliseconds(Parameters.SegmentLength) : t.EndTime;
                 Segment seg = new Segment(this.ChannelCnt) { Tra = t };
                 pi = InsertPoint(pi, exp, start, end, seg);
                 InssertWave(ti, exp, start, end, seg);
                 t.Segments.Add(seg);
                 seg.Length = (end - start).TotalMilliseconds;
             }
         }
     }
 }
Example #4
0
 private Shape BuildShape(Segment seg, int colorId)
 {
     Shape shape = (Shape)Activator.CreateInstance(Parameters.ShapeType);
     double radio = Parameters.ColorRadio[colorId];
     Point c = seg.CenterPoint();
     double x = c.X * Parameters.XRate;
     double y = (this.CavHeight + Exp.MaxY * Parameters.YRate) / 2 - c.Y * Parameters.YRate;
     shape.Margin = new Thickness(x - radio, CavHeight - y - radio, 0, 0);
     shape.Fill = Parameters.ColorList[colorId];
     shape.Width = shape.Height = radio * 2;
     return shape;
 }