/// <summary> /// Create a view data for MultiDimensionGraph. /// </summary> /// <returns>Visual dimension graph view data.</returns> public static VisualDimensionGraph CreateMultiDimensionGraphData() { VisualDimensionGraph data = new VisualDimensionGraph(); data.SelectedDimensions = new ObservableCollection<int>(); data.StaticTrajectory = new VisualMultiTrajectory(data.SelectedDimensions); data.StaticTrajectory.TimeAxis = data.TimeAxis; data.DeltaTrajectory = new VisualMultiTrajectory(data.SelectedDimensions); data.DeltaTrajectory.TimeAxis = data.TimeAxis; data.AccelerationTrajectory = new VisualMultiTrajectory(data.SelectedDimensions); data.AccelerationTrajectory.TimeAxis = data.TimeAxis; data.PhoneDurations.TimeAxis = data.TimeAxis; return data; }
/// <summary> /// Create a view data for SingleDimensionGraph. /// </summary> /// <returns>Visual dimension graph view data.</returns> public static VisualDimensionGraph CreateSingleDimensionGraphData() { VisualDimensionGraph data = new VisualDimensionGraph(); data.StaticTrajectory = new VisualSingleTrajectory(); data.StaticTrajectory.TimeAxis = data.TimeAxis; data.DeltaTrajectory = new VisualSingleTrajectory(); data.DeltaTrajectory.TimeAxis = data.TimeAxis; data.AccelerationTrajectory = new VisualSingleTrajectory(); data.AccelerationTrajectory.TimeAxis = data.TimeAxis; data.PhoneDurations.TimeAxis = data.TimeAxis; return data; }
/// <summary> /// Build trajectory information. /// </summary> /// <param name="dimensionGraphData">Dimension graph data.</param> /// <param name="mousePos">Mouse position.</param> /// <param name="parameters">Parameter list.</param> /// <param name="auxiliaryParameters">Auxiliary parameters.</param> /// <param name="means">Mean list.</param> /// <param name="deviations">Deviation list.</param> /// <param name="trajectoryInfo">Trajectory info.</param> public static void BuildTrajectoryInfo(VisualDimensionGraph dimensionGraphData, double mousePos, Collection<double> parameters, Collection<double> auxiliaryParameters, Collection<double> means, Collection<double> deviations, VisualTrajectoryInfo trajectoryInfo) { double time = dimensionGraphData.TimeAxis.StartingTime + ViewHelper.PixelToTimeSpan(mousePos, dimensionGraphData.TimeAxis.ZoomScale); trajectoryInfo.Time = time / 1000.0; int frameIndex = (int)Math.Floor(time / dimensionGraphData.TimeAxis.SampleInterval); if (frameIndex >= means.Count) { frameIndex = means.Count - 1; // the graph board has width } trajectoryInfo.FrameIndex = frameIndex; if (parameters.Count > frameIndex) { trajectoryInfo.GeneratedParameter = parameters[frameIndex]; } else { trajectoryInfo.GeneratedParameter = double.NegativeInfinity; } trajectoryInfo.Mean = means[frameIndex]; trajectoryInfo.StandardDeviation = deviations[frameIndex]; int segIndex = 0; VisualSegment segment = FindSegment(dimensionGraphData.WordSegments, frameIndex, out segIndex); if (segment != null) { trajectoryInfo.Word = segment.Text; } segment = FindSegment(dimensionGraphData.PhoneSegments, frameIndex, out segIndex); if (segment != null) { trajectoryInfo.Phone = segment.Text; } trajectoryInfo.ShowCandidatesParameter = dimensionGraphData.DisplayController.TrajectoryDisplayController.AuxiliaryTrajectoryShowed; if (trajectoryInfo.ShowCandidatesParameter) { if (auxiliaryParameters.Count > frameIndex) { trajectoryInfo.CandidatesParameter = auxiliaryParameters[frameIndex]; } else { trajectoryInfo.CandidatesParameter = double.NegativeInfinity; } } }