static void Draw(Graphics g, BehaviorSnapshot snapshotA, BehaviorSnapshot snapshotB, BehaviorVisualizationRendererSettings settings) { Point pA = GetPoint(snapshotA, settings); Point pB = GetPoint(snapshotB, settings); float width = GetWidth(snapshotA, snapshotB, settings); switch (settings.PathStyle) { case BehaviorVisualizationRendererSettings.PathStyleEnum.Dots: float halfWidth = width / 2.0f; using (SolidBrush b = new SolidBrush(settings.PathColor)) { g.FillEllipse(b, pA.X - halfWidth, pA.Y - halfWidth, width, width); } break; case BehaviorVisualizationRendererSettings.PathStyleEnum.Lines: using (Pen p = new Pen(settings.PathColor, width)) { p.EndCap = System.Drawing.Drawing2D.LineCap.Round; g.DrawLine(p, pA, pB); } break; default: break; } }
static Point GetPoint(BehaviorSnapshot snapshot, BehaviorVisualizationRendererSettings settings) { Vector offset = snapshot.Position - settings.ImageOriginPosition; Vector pixelPosition = offset * settings.PixelsPerWorldUnit * SCALE; return(new Point((int)pixelPosition.X, (int)pixelPosition.Y)); }
public static List <BehaviorSnapshot> Parse(string data) { var snapshots = new List <BehaviorSnapshot>(); string[] separators = { "\r\n", "\n" }; string[] lines = data.Split(separators, StringSplitOptions.RemoveEmptyEntries); foreach (var line in lines) { if (line[0] != '#') { string[] values = line.Split('\t'); float timestamp = float.Parse(values[0]); int region = int.Parse(values[1]); float px = float.Parse(values[2]); float py = float.Parse(values[3]); float pz = float.Parse(values[4]); float fx = float.Parse(values[5]); float fy = float.Parse(values[6]); float fz = float.Parse(values[7]); Vector position = new Vector(px, py, pz); Vector forward = new Vector(fx, fy, fz); var snapshot = new BehaviorSnapshot(timestamp, region, position, forward); snapshots.Add(snapshot); } } return(snapshots); }
static float GetWidth(BehaviorSnapshot snapshotA, BehaviorSnapshot snapshotB, BehaviorVisualizationRendererSettings settings) { return(settings.PathWidth * SCALE); }