double GetCurrentWidth() { var span = new RealNumberSpan(); foreach (Anchor anchor in NodeAnchors()) { span.AddValue(anchor.Left); span.AddValue(anchor.Right); } return span.Length; }
void StretchHeight() { var desiredSpan = new RealNumberSpan(); foreach (Node node in originalGraph.Nodes) { desiredSpan.AddValue(node.BoundingBox.Height/2); desiredSpan.AddValue(sugiyamaSettings.MinimalHeight - node.BoundingBox.Height/2); } var currentSpan = new RealNumberSpan(); foreach (Anchor anchor in NodeAnchors()) currentSpan.AddValue(anchor.Y); if (currentSpan.Length > ApproximateComparer.DistanceEpsilon) { double stretch = desiredSpan.Length/currentSpan.Length; if (stretch > 1) foreach (Anchor a in anchors) a.Y *= stretch; } }
/// <summary> /// </summary> void StretchWidth() { //calculate the desired span of the anchor centers and the current span of anchor center var desiredSpan = new RealNumberSpan(); foreach (Node node in originalGraph.Nodes) { desiredSpan.AddValue(node.BoundingBox.Width/2); desiredSpan.AddValue(sugiyamaSettings.MinimalWidth - node.BoundingBox.Width/2); } var currentSpan = new RealNumberSpan(); foreach (Anchor anchor in NodeAnchors()) currentSpan.AddValue(anchor.X); if (currentSpan.Length > ApproximateComparer.DistanceEpsilon) { double stretch = desiredSpan.Length/currentSpan.Length; if (stretch > 1) foreach (Anchor a in anchors) a.X *= stretch; } }
double GetCurrentHeight() { var span = new RealNumberSpan(); foreach (Anchor anchor in NodeAnchors()) { span.AddValue(anchor.Top); span.AddValue(anchor.Bottom); } return span.Length; }
void ShowLeftTree(params ICurve[] curves) { var l = Obstacles.Select(p => new DebugCurve(100, 0.01,"green", p)).ToList(); var range = new RealNumberSpan(); var ellipseSize = 0.01; foreach (var s in leftConeSides) { var curve = ExtendSegmentToZ(s); range.AddValue(curve.Start*DirectionPerp); range.AddValue(curve.End * DirectionPerp); l.Add(new DebugCurve(100, 0.1, "red", curve)); l.Add(new DebugCurve(200,0.1, "black", new Ellipse(ellipseSize,ellipseSize, curve.End))); ellipseSize += 2; } l.Add(DebugSweepLine(range)); // foreach (VisibilityEdge edge in visibilityGraph.Edges) // l.Add(BezierOnEdge(edge)); l.AddRange(curves.Select(c => new DebugCurve(100, 0.5, "brown", c))); LayoutAlgorithmSettings.ShowDebugCurvesEnumeration(l); }