private void UpdateViewBounds() { try { UpdateGraphBounds(); if (fViewBounds == null) { fViewBounds = fGraphBounds; return; } ArborPoint vLT = fGraphBounds.LeftTop.Sub(fViewBounds.LeftTop).Mul(Mag); ArborPoint vRB = fGraphBounds.RightBottom.Sub(fViewBounds.RightBottom).Mul(Mag); double aX = vLT.Magnitude() * fViewWidth; double aY = vRB.Magnitude() * fViewHeight; if (aX > 1.0f || aY > 1.0f) { ArborPoint nbLT = fViewBounds.LeftTop.Add(vLT); ArborPoint nbRB = fViewBounds.RightBottom.Add(vRB); fViewBounds = new PSBounds(nbLT, nbRB); } } catch (Exception ex) { Debug.WriteLine("ArborSystem.UpdateViewBounds(): " + ex.Message); } }
public void Test_Magnitude() { var pt = new ArborPoint(3, 4); Assert.AreEqual(3.0f, pt.X); Assert.AreEqual(4.0f, pt.Y); Assert.AreEqual(5d, pt.Magnitude()); }
private void ApplySprings() { for (int i = 0, edgesCount = fEdges.Count; i < edgesCount; i++) { ArborEdge edge = fEdges[i]; ArborPoint s = edge.Target.Pt.Sub(edge.Source.Pt); ArborPoint r = s.Normalize(); double q = edge.Stiffness * (edge.Length - s.Magnitude()); edge.Source.ApplyForce(r.Mul(q * -0.5f)); edge.Target.ApplyForce(r.Mul(q * 0.5f)); } }