/// <summary> /// 添加坐标 /// </summary> /// <param name="p"></param> public void AddPosition(FramePosition p) { if (Contain(p)) { allPositions.Add(p); } }
public void AddPosition(string sp) { FramePosition p = FramePosition.Parse(sp); if (Contain(p)) { allPositions.Add(p); } }
/// <summary> /// 从字符串中解析出对象 /// </summary> /// <param name="strValue"></param> /// <returns></returns> public static Track Parse(string strValue) { Track t = new RigourTech.Track(); if (string.IsNullOrEmpty(strValue)) { return(null); } string[] items = strValue.Split('|'); if (items.Length != 6) { LogText.Error("Track.pase", "数据格式错误:" + strValue); } MatchCollection results = Regex.Matches(items[1], "[0-9]*,-?[0-9]*\\.[0-9]*,-?[0-9]*\\.[0-9]*,-?[0-9]*\\.[0-9]*"); foreach (Match m in results) { t.Trace.Add(FramePosition.Parse(m.Value.Substring(0, m.Value.LastIndexOf(",")))); } MatchCollection mtouchdownpoints = Regex.Matches(items[1], "-?[0-9]*\\.[0-9]*,-?[0-9]*\\.[0-9]*,-?[0-9]*\\.[0-9]*"); if (mtouchdownpoints.Count == 2) { t.Touchdown_P1 = Point3D.Prase(mtouchdownpoints[0].Value); t.Touchdown_P2 = Point3D.Prase(mtouchdownpoints[1].Value); } else { LogText.Error("Track.pase", "数据格式错误:" + strValue); } MatchCollection mtimes = Regex.Matches(items[2], "[0-9]*"); if (mtimes.Count == 2) { t.BeginTime = long.Parse(mtimes[0].Value); t.Endtime = long.Parse(mtimes[1].Value); } else { LogText.Error("Track.pase", "数据格式错误:" + strValue); } t.TouchdonwMarkNumber = Regex.Match(items[3], "[0-9]?").Value; t.Radius = double.Parse(Regex.Match(items[3], "[0-9]*\\.[0-9]*").Value); t.MaxRotateSpeed = double.Parse(items[4]); return(t); }
/// <summary> /// 判断是否属于当前用户 /// </summary> /// <param name="p"></param> /// <returns></returns> private bool Contain(FramePosition p) { return(user.X1 <= p.Position.X && user.X2 >= p.Position.X && user.Y1 <= p.Position.Y && user.Y2 >= p.Position.Y); }