Commit 7ea3d69b by Pierre Fernbach

### Merge branch 'topic/FixCubicHermitePythonOnDevel' into 'devel'

```[Fix cubic hermite] Cubic hermite in python : Use tangent instead of position

See merge request loco-3d/curves!15```
parents 7ed6d544 1277cb5c
 ... ... @@ -134,7 +134,7 @@ t_pair_point_tangent_t getPairsPointTangent(const point_list_t& points, const po } for(int i =0;i
 ... ... @@ -43,6 +43,7 @@ class TestCurves(unittest.TestCase): a.min() a.max() a(0.4) self.assertTrue ((a(a.min()) == matrix([1., 2., 3.]).transpose()).all()) self.assertTrue ((a.derivate(0.4, 0) == a(0.4)).all()) a.derivate(0.4, 2) a = a.compute_derivate(100) ... ... @@ -94,6 +95,7 @@ class TestCurves(unittest.TestCase): a.min() a.max() a(0.4) self.assertTrue ((a(a.min()) == matrix([1., 2., 3.]).transpose()).all()) self.assertTrue ((a.derivate(0.4, 0) == a(0.4)).all()) a.derivate(0.4, 2) return ... ... @@ -105,15 +107,16 @@ class TestCurves(unittest.TestCase): waypoints2 = matrix([[1., 1., 1.], [1., 1., 1.]]).transpose() a = polynomial(waypoints1, 0.,1.) b = polynomial(waypoints2, 1., 3.) ppc = piecewise_polynomial_curve(a) ppc.add_curve(b) ppc.min() ppc.max() ppc(0.4) self.assertTrue ((ppc.derivate(0.4, 0) == ppc(0.4)).all()) ppc.derivate(0.4, 2) ppc.is_continuous(0) ppc.is_continuous(1) pc = piecewise_polynomial_curve(a) pc.add_curve(b) pc.min() pc.max() pc(0.4) self.assertTrue ((pc(pc.min()) == matrix([1., 1., 1.]).transpose()).all()) self.assertTrue ((pc.derivate(0.4, 0) == pc(0.4)).all()) pc.derivate(0.4, 2) pc.is_continuous(0) pc.is_continuous(1) return def test_piecewise_bezier3_curve(self): ... ... @@ -122,15 +125,16 @@ class TestCurves(unittest.TestCase): waypoints = matrix([[1., 2., 3.], [4., 5., 6.]]).transpose() a = bezier3(waypoints, 0., 1.) b = bezier3(waypoints, 1., 2.) ppc = piecewise_bezier3_curve(a) ppc.add_curve(b) ppc.min() ppc.max() ppc(0.4) self.assertTrue ((ppc.derivate(0.4, 0) == ppc(0.4)).all()) ppc.derivate(0.4, 2) ppc.is_continuous(0) ppc.is_continuous(1) pc = piecewise_bezier3_curve(a) pc.add_curve(b) pc.min() pc.max() pc(0.4) self.assertTrue ((pc(pc.min()) == matrix([1., 2., 3.]).transpose()).all()) self.assertTrue ((pc.derivate(0.4, 0) == pc(0.4)).all()) pc.derivate(0.4, 2) pc.is_continuous(0) pc.is_continuous(1) return def test_piecewise_bezier6_curve(self): ... ... @@ -139,35 +143,38 @@ class TestCurves(unittest.TestCase): waypoints = matrix([[1., 2., 3., 7., 5., 5.], [4., 5., 6., 4., 5., 6.]]).transpose() a = bezier6(waypoints, 0., 1.) b = bezier6(waypoints, 1., 2.) ppc = piecewise_bezier6_curve(a) ppc.add_curve(b) ppc.min() ppc.max() ppc(0.4) self.assertTrue ((ppc.derivate(0.4, 0) == ppc(0.4)).all()) ppc.derivate(0.4, 2) ppc.is_continuous(0) ppc.is_continuous(1) pc = piecewise_bezier6_curve(a) pc.add_curve(b) pc.min() pc.max() pc(0.4) self.assertTrue ((pc(pc.min()) == matrix([1., 2., 3., 7., 5., 5.]).transpose()).all()) self.assertTrue ((pc.derivate(0.4, 0) == pc(0.4)).all()) pc.derivate(0.4, 2) pc.is_continuous(0) pc.is_continuous(1) return def test_piecewise_cubic_hermite_curve(self): # To test : # - Functions : constructor, min, max, derivate, add_curve, is_continuous points = matrix([[1., 2., 3.], [4., 5., 6.]]).transpose() tangents = matrix([[1., 2., 3.], [4., 5., 6.]]).transpose() tangents = matrix([[2., 2., 2.], [4., 4., 4.]]).transpose() time_points0 = matrix([0., 1.]).transpose() time_points1 = matrix([1., 2.]).transpose() a = cubic_hermite_spline(points, tangents, time_points0) b = cubic_hermite_spline(points, tangents, time_points1) ppc = piecewise_cubic_hermite_curve(a) ppc.add_curve(b) ppc.min() ppc.max() ppc(0.4) self.assertTrue ((ppc.derivate(0.4, 0) == ppc(0.4)).all()) ppc.derivate(0.4, 2) ppc.is_continuous(0) ppc.is_continuous(1) pc = piecewise_cubic_hermite_curve(a) pc.add_curve(b) pc.min() pc.max() pc(0.4) self.assertTrue ((pc(0.) == matrix([1., 2., 3.]).transpose()).all()) self.assertTrue ((pc.derivate(0.,1) == matrix([2., 2., 2.]).transpose()).all()) self.assertTrue ((pc.derivate(0.4, 0) == pc(0.4)).all()) pc.derivate(0.4, 2) pc.is_continuous(0) pc.is_continuous(1) return def test_exact_cubic(self): ... ... @@ -205,12 +212,14 @@ class TestCurves(unittest.TestCase): def test_cubic_hermite_spline(self): points = matrix([[1., 2., 3.], [4., 5., 6.]]).transpose() tangents = matrix([[1., 2., 3.], [4., 5., 6.]]).transpose() tangents = matrix([[2., 2., 2.], [4., 4., 4.]]).transpose() time_points = matrix([0., 1.]).transpose() a = cubic_hermite_spline(points, tangents, time_points) a.min() a.max() a(0.4) self.assertTrue ((a(0.) == matrix([1., 2., 3.]).transpose()).all()) self.assertTrue ((a.derivate(0.,1) == matrix([2., 2., 2.]).transpose()).all()) self.assertTrue ((a.derivate(0.4, 0) == a(0.4)).all()) a.derivate(0.4, 2) return ... ...
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!