fix: evaluate() 中 BSplineCurve 空控制点 → 传入合法哑数据
CI / Build & Test (push) Failing after 31s
CI / Release Build (push) Failing after 28s

This commit is contained in:
茂之钳
2026-07-23 16:34:56 +00:00
parent bad6a0e8b7
commit d60f36dfc2
+5 -2
View File
@@ -23,7 +23,9 @@ Point3D NurbsSurface::evaluate(double u, double v) const {
// Evaluate v-direction first: for each u-control row, evaluate B-spline in v
std::vector<Point3D> row_results;
BSplineCurve bs_v({}, knots_v_, degree_v_);
// Create BSplineCurve with dummy control points (only knots/degree needed for span/basis)
int nv_pts = static_cast<int>(knots_v_.size()) - degree_v_ - 1;
BSplineCurve bs_v(std::vector<Point3D>(nv_pts > 0 ? nv_pts : 0), knots_v_, degree_v_);
int span_v = bs_v.find_span(v);
auto Nv = bs_v.basis_functions(v, span_v);
@@ -44,7 +46,8 @@ Point3D NurbsSurface::evaluate(double u, double v) const {
}
// Evaluate u-direction
BSplineCurve bs_u({}, knots_u_, degree_u_);
int nu_pts = static_cast<int>(knots_u_.size()) - degree_u_ - 1;
BSplineCurve bs_u(std::vector<Point3D>(nu_pts > 0 ? nu_pts : 0), knots_u_, degree_u_);
int span_u = bs_u.find_span(u);
auto Nu = bs_u.basis_functions(u, span_u);