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
|
// Evaluate v-direction first: for each u-control row, evaluate B-spline in v
|
||||||
std::vector<Point3D> row_results;
|
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);
|
int span_v = bs_v.find_span(v);
|
||||||
auto Nv = bs_v.basis_functions(v, 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
|
// 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);
|
int span_u = bs_u.find_span(u);
|
||||||
auto Nu = bs_u.basis_functions(u, span_u);
|
auto Nu = bs_u.basis_functions(u, span_u);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user