fix: evaluate() 中 BSplineCurve 空控制点 → 传入合法哑数据
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user