public void Split() { Bezier2f bezier = new Bezier2f(3); bezier.Control[0] = new Vector2f(0.0f, 0.0f); bezier.Control[1] = new Vector2f(0.0f, 2.5f); bezier.Control[2] = new Vector2f(2.5f, 5.0f); bezier.Control[3] = new Vector2f(5, 5); float split = 0.5f; Bezier2f b0, b1; bezier.Split(split, out b0, out b1); Assert.AreEqual(bezier.Degree, b0.Degree); Assert.AreEqual(bezier.Degree, b1.Degree); Assert.AreEqual(bezier.Control[0], b0.Control[0]); Assert.AreEqual(bezier.Control[3], b1.Control[3]); Vector2f p = bezier.Position(split); Assert.AreEqual(p, b0.Control[3]); Assert.AreEqual(p, b1.Control[0]); Assert.AreEqual(Math.Round(bezier.Length(100), 4), Math.Round(b0.Length(50) + b1.Length(50), 4)); }
public void CompareLengthToQuadratic() { QuadraticBezier2f quadratic = new QuadraticBezier2f(); quadratic.C0 = new Vector2f(0.027f, 0.065f); quadratic.C1 = new Vector2f(1.234f, 0.012f); quadratic.C2 = new Vector2f(0.816f, 1.298f); Bezier2f bezier = new Bezier2f(2); bezier.Control[0] = quadratic.C0; bezier.Control[1] = quadratic.C1; bezier.Control[2] = quadratic.C2; float len0 = quadratic.Length; float len1 = bezier.Length(100); Assert.AreEqual(Math.Round(len0, 4), Math.Round(len1, 4)); }