private ProximityOverlapRemoval RunOverlapRemoval(GeometryGraph graphCopy, GeometryGraph graphOriginal, HashSet <Tuple <int, int> > proximityEdges, HashSet <Tuple <int, int, int> > proximityTriangles, List <Tuple <string, double> > statistics, OverlapRemovalSettings settings) { ProximityOverlapRemoval prism = new ProximityOverlapRemoval(graphCopy); prism.Settings = settings; Timer timer = new Timer(); timer.Start(); prism.RemoveOverlaps(); timer.Stop(); var cpuTimeSpan = TimeSpan.FromSeconds(timer.Duration); var statCpuTime = Tuple.Create("CPUTime", cpuTimeSpan.TotalSeconds); var statIterations = Tuple.Create("Iterations", (double)prism.LastRunIterations); var statEdgeLength = Statistics.Statistics.EdgeLengthDeviation(graphOriginal, graphCopy, proximityEdges); var statProcrustes = Statistics.Statistics.ProcrustesStatistics(graphOriginal.Nodes.Select(v => v.Center).ToList(), graphCopy.Nodes.Select(v => v.Center).ToList()); var statTriangleOrient = Statistics.Statistics.TriangleOrientation(graphOriginal, graphCopy, proximityTriangles); var statArea = Statistics.Statistics.Area(graphCopy); statistics.Add(statCpuTime); statistics.Add(statIterations); statistics.Add(statEdgeLength); statistics.Add(statProcrustes); statistics.Add(statArea); statistics.Add(statTriangleOrient); return(prism); }
internal static void Run(String description, Task task) { #if DEBUG && TEST_MSAGL Timer t = new Timer(); t.Start(); task(); t.Stop(); Console.Write(description); Console.WriteLine(" executed in {0} sec.", String.Format("{0:0.00}", t.Duration)); #else //task(); #endif }