public static VehicleData FromFile(string path)
        {
            var reader = new StreamReader(File.OpenRead(path));
            VehicleData v = new VehicleData();
            //skip first line (header
            reader.ReadLine();
            while (reader.EndOfStream == false)
            {
                var line = reader.ReadLine();
                var pieces = line.Split(',');
                v.Events.Add(pieces[0]);
                v.Time.Add(Convert.ToDouble(pieces[1]));
                v.Position.Add(new XYPoint(Convert.ToDouble(pieces[2]), Convert.ToDouble(pieces[3])));
                v.Angle.Add(Convert.ToDouble(pieces[4]));
            }
            reader.Close();

            return v;
        }
示例#2
0
        private void DrawGraph(ref PlotModel myModel, VehicleData v, Scene scene, OxyColor c)
        {
            //detect discontinuities in position and split lists accordingly
            var prevPos = v.Position[0];
            var sections = new List<List<XYPoint>>();

            //set up first list and point
            sections.Add(new List<XYPoint>());
            int currList = 0;
            sections[0].Add(prevPos);

            for (int i = 1; i < v.Position.Count; i++)
            {
                var currPos = v.Position[i];
                if (IsDiscontinuity(prevPos, currPos, 2.0f))
                {
                    currList++;
                    sections.Add(new List<XYPoint>());
                }
                sections[currList].Add(currPos);
                prevPos = currPos;
            }

            foreach (var section in sections)
            {
                var positionData = new LineSeries();
                positionData.Color = c;
                positionData.Points.AddRange(section.Select(xy => (DataPoint)xy));

                myModel.Series.Add(positionData);
            }
            //var lights = new ScatterSeries();
            //lights.MarkerType = MarkerType.Circle;
            foreach (var light in scene.Lights)
            {
                LineSeries circle;
                if (light.Position != null)
                {
                    circle = MakeCircle(light.Position[0], light.Position[1], light.Radius);
                }
                else
                {
                    circle = new LineSeries();
                    foreach(List<double> d in light.Path)
                    {
                        circle.Points.Add(new DataPoint(d[0], d[1]));
                    }
                    circle.Points.Add(new DataPoint(light.Path[0][0], light.Path[0][1]));
                }
                circle.Color = Color.Black.ToOxyColor();
                myModel.Series.Add(circle);

                //lights.Points.Add(new ScatterPoint(light.Position[0], light.Position[1],light.Radius));
            }
            //myModel.Series.Add(lights);
        }
示例#3
0
        private void DrawGraph3(ref PlotModel myModel, VehicleData v, Scene scene, double time, OxyColor c)
        {
            //detect discontinuities in position and split lists accordingly
            var prevPos = v.Position[0];
            var sections = new List<List<XYPoint>>();

            //set up first list and point
            sections.Add(new List<XYPoint>());
            int currList = 0;
            sections[0].Add(prevPos);

            var positionData = new LineSeries();
            positionData.Color = c;

            for (int i = 1; i < v.Position.Count; i++)
            {
                positionData.Points.Add(new DataPoint(v.Time[i], v.Angle[i]));

                if (time > 0 && v.Time[i] > time)
                {
                    break;
                }
            }

            myModel.Series.Add(positionData);
        }