N阶Bezier

cpp 复制代码
deque<QPointF> mapToolCurve::getBezier(deque<QPointF>& cps)
{
    deque<QPointF> _resp;

    for (double t = 0.0; t < 1.0; t += 0.01)
    {
        auto pointf = getBezierLoop(cps, t);
        _resp.emplace_back(pointf);
    }

    return _resp;
}

QPointF mapToolCurve::getBezierLoop(deque<QPointF>& cps,double t)
{
    QPointF outPoint;
    deque<QPointF> newCps;
    for (size_t i = 0; i < cps.size() - 1; i++)
    {
        auto p = cps[i] + (cps[i + 1] - cps[i]) * t;
        newCps.emplace_back(p);
    }

    if (1 == newCps.size())
    {
        return newCps[0];
    }else
    {
        outPoint = getBezierLoop(newCps,t);
    }
    return outPoint;
}
相关推荐
jakeswang1 分钟前
Java 项目中实现统一的 追踪ID,traceId实现分布式系统追踪
java·后端·架构
寒山李白6 分钟前
Java 传输较大数据的相关问题解析和面试问答
java·开发语言·面试·传输
白总Server18 分钟前
Golang dig框架与GraphQL的完美结合
java·大数据·前端·javascript·后端·go·graphql
lightgis35 分钟前
个人支出智能分析系统
java
春生野草38 分钟前
MyBatis中关于缓存的理解
java·缓存·mybatis
bubiyoushang8881 小时前
MATLAB实现图像纹理特征提取
人工智能·算法·matlab
了不起的杰1 小时前
[算法][好题分享][第三大的数][最短无序子数组]
算法
a东方青1 小时前
[蓝桥杯 2023 国 B] AB 路线 (BFS)
c++·算法·职场和发展·蓝桥杯·宽度优先
oioihoii1 小时前
C++11 Generalized(non-trivial) Unions:从入门到精通
java·开发语言·c++
颯沓如流星1 小时前
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
java·重构·装饰器模式