changeset 1092:47a72344db71 feature/dataspline

Bugfix in dataSpline(), reparameterize with parameter from 0 to 1 before using Curve.
author Martin Almquist <malmquist@stanford.edu>
date Fri, 05 Apr 2019 13:14:29 -0700
parents b4054942e277
children fdff002ebb32
files +parametrization/dataSpline.m
diffstat 1 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/+parametrization/dataSpline.m	Fri Apr 05 10:17:04 2019 +0200
+++ b/+parametrization/dataSpline.m	Fri Apr 05 13:14:29 2019 -0700
@@ -13,14 +13,18 @@
 
 	pp_g = spapi(4, t_data, f_data); % equivalent to g = spapi(aptknt(t_data, 4), t_data, f_data)
 	% or  (not sure what the difference is?!)
-	% g = spapi(optknt(t_data, 4), t_data, f_data)
-	pp_gp = fnder(g);
+	% pp_g = spapi(optknt(t_data, 4), t_data, f_data)
+	pp_gp = fnder(pp_g);
 
-	g = @(t)fnval(pp_g, t);
-	pp_gp = @(t)fnval(pp_gp, t);
+	% Reparametrize with parameter s from 0 to 1 to use Curve class
+    tmin = min(t_data);
+    tmax = max(t_data);
+    t = @(s) tmin + s*(tmax-tmin);
+    dt_ds = @(s) 0*s + (tmax-tmin);
+	g = @(s) [t(s); fnval(pp_g, t(s))];
+	gp = @(s) [dt_ds(s); fnval(pp_gp, t(s)).*dt_ds(s)];
 
+	% Create Curve object and reparametrize with arclength parametrization
 	C = parametrization.Curve(g, gp);
-
-	% Reparametrize with arclength parametrization
 	C = C.arcLengthParametrization(m_data);
 end