diff --git a/Geo/GeoInterpolation.cpp b/Geo/GeoInterpolation.cpp index 64d46d7b8da9b914f5eee3fdccdb91a16e1976ff..00f59bfc7784f4e4f932add9ce9819c83cdf9ac1 100644 --- a/Geo/GeoInterpolation.cpp +++ b/Geo/GeoInterpolation.cpp @@ -218,7 +218,6 @@ Vertex InterpolateCurve(Curve *c, double u, int derivee) } Vertex V; - V.u = u; if(derivee) { double eps1 = (u == 0) ? 0 : 1.e-5; @@ -229,6 +228,7 @@ Vertex InterpolateCurve(Curve *c, double u, int derivee) V.Pos.X = (D[1].Pos.X - D[0].Pos.X) / (eps1 + eps2); V.Pos.Y = (D[1].Pos.Y - D[0].Pos.Y) / (eps1 + eps2); V.Pos.Z = (D[1].Pos.Z - D[0].Pos.Z) / (eps1 + eps2); + V.u = u; return V; } @@ -265,7 +265,7 @@ Vertex InterpolateCurve(Curve *c, double u, int derivee) V.Pos.Y = pp.y(); V.Pos.Z = pp.z(); } - return V; + break; case MSH_SEGM_PARAMETRIC: V.Pos.X = evaluate_scalarfunction("t", u, c->functu); @@ -273,7 +273,7 @@ Vertex InterpolateCurve(Curve *c, double u, int derivee) V.Pos.Z = evaluate_scalarfunction("t", u, c->functw); V.w = (1. - u) * c->beg->w + u * c->end->w; V.lc = (1. - u) * c->beg->lc + u * c->end->lc; - return V; + break; case MSH_SEGM_CIRC: case MSH_SEGM_CIRC_INV: @@ -298,14 +298,16 @@ Vertex InterpolateCurve(Curve *c, double u, int derivee) V.Pos.Z += c->Circle.v[1]->Pos.Z; V.w = (1. - u) * c->beg->w + u * c->end->w; V.lc = (1. - u) * c->beg->lc + u * c->end->lc; - return V; + break; case MSH_SEGM_BSPLN: case MSH_SEGM_BEZIER: - return InterpolateUBS(c, u, 0); + V = InterpolateUBS(c, u, 0); + break; case MSH_SEGM_NURBS: - return InterpolateNurbs(c, u, 0); + V = InterpolateNurbs(c, u, 0); + break; case MSH_SEGM_SPLN: N = List_Nbr(c->Control_Points); @@ -355,23 +357,25 @@ Vertex InterpolateCurve(Curve *c, double u, int derivee) V.Pos.X = pt.x(); V.Pos.Y = pt.y(); V.Pos.Z = pt.z(); - return V; } else - return InterpolateCubicSpline(v, t, c->mat, 0, t1, t2); + V = InterpolateCubicSpline(v, t, c->mat, 0, t1, t2); + break; case MSH_SEGM_BND_LAYER: Msg::Error("Cannot interpolate boundary layer curve"); - return V; + break; case MSH_SEGM_DISCRETE: Msg::Error("Cannot interpolate discrete curve"); - return V; + break; default: Msg::Error("Unknown curve type in interpolation"); - return V; + break; } + V.u = u; + return V; }