写文章
 找回密码
 立即注册
搜索
0赞
赞赏
手机版
扫码打开手机版
把文字装进口袋

问题请教

I.K.I.C 2023-12-15 11:33:57
在用Geom2BSplineCurve构造对象时,一直会报异常,想请教一下是构造B样条所采用的参数有什么问题吗?还是其它的问题?

// 定义控制点
    vector<Point2> controlPoints = {
        Point2(0.0, 0.0),
        Point2(1.0, 2.0),
        Point2(3.0, 4.0),
        Point2(5.0, 6.0),
        Point2(9.0, 2.0),
        Point2(5.0, 8.0),

    };

    // 节点向量
        vector<double> knots = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0};

        // 节点的重数
        std::vector<int> multiplicities = { 5, 1, 5 };

        // 次数
        int degree = 4;

        // 是否周期性曲线
        bool isPeriodic = false;

    Geom2BSplineCurve bspline(controlPoints, knots, multiplicities, degree, isPeriodic);

您需要登录后才可以回帖 立即登录
本帖最后由 Ray 于 2023-12-18 17:44 编辑

您好,感谢您对九韶内核的支持和实践!

请注意,节点向量需要拆分成不重复的节点向量和每个节点的重数,分别作为knots和mults传入构造函数中,因此两个vector的长度应该是一样的。

具对于非周期性曲线,knots的数量应该是controlPoints - degree + 1, 因此knots的vector中应该只有3个,您可以修改一下knots vector为:
vector<double> knots = {0.0,0.5,1.0} 再尝试一下。


如果还有其他问题,请继续留言。

2023-12-18 17:32:34
返回顶部