From c59f93cd3480f48ba7c110aef08ccb520fea6a33 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 7 Apr 2018 22:28:53 +0100 Subject: [PATCH] curveopt.py: wip Signed-off-by: Ian Jackson --- curveopt.py | 26 +++++++------------------- findcurve.c | 11 +++++++---- symbolic.py | 1 + 3 files changed, 15 insertions(+), 23 deletions(-) diff --git a/curveopt.py b/curveopt.py index a0e44cb..699e437 100644 --- a/curveopt.py +++ b/curveopt.py @@ -18,7 +18,7 @@ import symbolic findcurve_subprocs = { } class OptimisedCurve(): - def __init__(hc, cp, nt): + def __init__(oc, cp, nt): db = DiscreteBezier(cp, nt, constructor=BezierSegment) fc_input = map(db.point_at_it, range(0, nt+1)) for end in (False,True): @@ -79,21 +79,9 @@ class OptimisedCurve(): dbg('[%s] %s' % (l, commentary)) commentary = '' - hc.findcurve_result = l[0:6] - #hc.findcurve_result = findcurve_start - hc.threshold = l[0]**2 - hc.total_dist = hc.threshold + l[1]**2 - #vdbg().curve( hc.point_at_t ) - - def point_at_t(hc, normalised_parameter): - dist = normalised_parameter * hc.total_dist - ours = list(hc.findcurve_result) - if dist <= hc.threshold: - ours[0] = sqrt(dist) - ours[1] = 0 - else: - ours[1] = sqrt(dist - hc.threshold) - asmat = hc.func(*ours) - p = asmat[:,0] - p = augmatmultiply(hc.findcurve_basis, p) - return p + findcurve_result = l + + oc._result = np.reshape(findcurve_result, (3,-1)) + + def point_at_ti(oc, ti): + return oc._result[ti] diff --git a/findcurve.c b/findcurve.c index 32050ac..077f31c 100644 --- a/findcurve.c +++ b/findcurve.c @@ -33,8 +33,7 @@ static void prepare(double X[] /* startpoint */) { static double cb_Efunc(void *xp) { const double *X = xp; - double F[3], G[3]; - + DECLARE_F_G; CALCULATE_F_G; double e = 0; @@ -71,9 +70,13 @@ static double cb_metric(void *xp, void *yp) { } static void printcore(const double *X) { - int i; + int i, j; + DECLARE_F_G; + CALCULATE_F_G; printf("["); - for (i=0; i