3D空间曲线三次B样条平滑示例:

struct D_DOT3D //D_DOT3D示例,未完全实现
{  double x,y,z;
} double GetThreeBSplineValue(double p0, double p1, double p2, double p3, double t)
{double A0 = (p0 + 4*p1 + p2) / 6;double A1 = - (p0 - p2)/2;double A2 = (p0 - 2*p1 + p2) / 2;double A3 = - (p0 - 3*p1 + 3*p2 - p3)/6;return A0 + A1 * t + A2 * t*t + A3 * t*t*t;
}D_DOT3D GetThreeBSplineValue(D_DOT3D p0, D_DOT3D p1, D_DOT3D p2, D_DOT3D p3 , double t)
{D_DOT3D dot;dot.x = GetThreeBSplineValue(p0.x, p1.x, p2.x, p3.x, t);dot.y = GetThreeBSplineValue(p0.y, p1.y, p2.y, p3.y, t);dot.z = GetThreeBSplineValue(p0.z, p1.z, p2.z, p3.z, t);return dot;
}long ThreeBSplineCurve( vector<D_DOT3D> &line )
{if (line.size()<4)return 0;vector<D_DOT3D> vout;for (int i=0; i<line.size()-3; ++i){D_DOT3D p0(line[i]);D_DOT3D p1(line[i+1]);D_DOT3D p2(line[i+2]);D_DOT3D p3(line[i+3]);if(0 == i){D_DOT3D dot1 = GetThreeBSplineValue(p0, p1, p2, p3, 0.0);vout.push_back(dot1);}D_DOT3D dot2 = GetThreeBSplineValue(p0, p1, p2, p3, 1/3.0);D_DOT3D dot3 = GetThreeBSplineValue(p0, p1, p2, p3, 2/3.0);D_DOT3D dot4 = GetThreeBSplineValue(p0, p1, p2, p3, 1.0);vout.push_back(dot2);vout.push_back(dot3);vout.push_back(dot4);}line = vout;return 1;
}

曲线平滑-B样条曲线相关推荐

  1. python 曲线平滑处理——方法总结(Savitzky-Golay 滤波器、make_interp_spline插值法和convolve滑动平均滤波)

    文章目录 1 插值法对曲线平滑处理 1.1 插值法的常见实现方法 1.2 拟合和插值的区别 1.3 代码实例 2 Savitzky-Golay 滤波器实现曲线平滑 2.1 问题描述 2.2 Savit ...

  2. python 数据、曲线平滑处理

    python 数据.曲线平滑处理--方法总结 Savitzky-Golay 滤波器实现曲线平滑 插值法对折线进行平滑曲线处理 基于Numpy.convolve实现滑动平均滤波 数据平滑处理--log( ...

  3. 计算机图形学——bazier曲线和B样条曲线

    目录 前言 一.bazier曲线 1.bazier曲线的由来 二.B-spline 1.为何要引入B-spline曲线,Bazier曲线有何不足 2.B-spline曲线方法 前言 写这篇文章是因为最 ...

  4. Python之数据分析(案例:净额成交量、矢量化、数据曲线平滑)

    文章目录 一.净额成交量 二.标量函数矢量化 三.数据曲线平滑 一.净额成交量 1.案例分析 符号数组a: [10 -20 30 40 -50] 用法:numpy.sign(a) 结果是[1 -1 1 ...

  5. python 曲线平滑_曲线平滑(smoothing)

    曲线平滑 Savitzky-Golay滤波器 It uses least squares to regress a small window of your data onto a polynomia ...

  6. 贝塞尔曲线与B样条曲线

    文章目录 0.参考 1.问题起源与插值法的曲线拟合 1.1.问题起源 1.2.拉格朗日插值 1.3."基"的概念 1.4.插值存在的Runge现象 2.贝塞尔曲线 2.1.控制点的 ...

  7. 多项式曲线——搞清楚贝塞尔曲线、B样条曲线、Nurbs曲线的区别

    多项式曲线--搞清楚贝塞尔曲线.B样条曲线.nurbs曲线的区别 贝塞尔曲线 Bezier曲线定义 Bernstein基函数的性质 Bezier曲线的性质 B样条曲线 B样条曲线定义 B样条基函数的性 ...

  8. python 数据、曲线平滑处理——基于Numpy.convolve实现滑动平均滤波——详解

    文章目录 1 基于Numpy.convolve实现滑动平均滤波 1.1 滑动平均概念 1.2 滑动平均的数学原理 1.3 语法 1.4 滑动平均滤波示例 2 曲线平滑处理--Savitzky-Gola ...

  9. 曲线平滑/散点拟合——卡尔曼滤波

    曲线平滑/散点拟合--卡尔曼滤波 1. 初始化一系列的点 2.变量 3. 迭代过程 4. 结果 Date: 2020/04/15 Editor:萧潇子(Jesse) Contact: 12231676 ...

最新文章

  1. 内存问题分析的利器——valgrind的memcheck
  2. 如何在ubuntu下使用samba创建共享
  3. [原]Java 正则 多子串 匹配 替换
  4. Linux环境下MySQL基础命令(3)----增、删、改、查语句
  5. IDEA及IDEA汉化包
  6. 机器学习实战之SVM
  7. OpenCV学习(1) OpenCV的安装
  8. 太赞了!用200道题彻底搞定Python数据处理!
  9. 替代JavaOne 2013
  10. 论文学习15-Table Filling Multi-Task Recurrent Neural Network(联合实体关系抽取模型)
  11. 前端开发使用的 安卓模拟器_抖音有电脑版或者网页版吗?如何在电脑上使用抖音?...
  12. Java List remove()方法– ArrayList remove()
  13. CAM(内容可寻址存储器)的认知
  14. 2018~2021年软考下午真题考点总结-软考最新
  15. js 车牌号模糊处理
  16. 石墨烯的精细结构研究取得进展
  17. api 接口管理工具
  18. Android通知渠道
  19. linux 6.5光驱是什么意思,linux 6和5有什么不同
  20. 漫画:位运算技巧助你俘获offer

热门文章

  1. 【Prism】MEF版Commanding
  2. 浅聊一下Java中的char类型
  3. 电子元器件行业B2B交易系统:规范企业交易流程,提升销售管理效率
  4. android安卓远程协助控制电脑PC端
  5. Sphinx武林秘籍(中)
  6. 网页设计之竞赛平台模块
  7. java、mysql、tomcat、maven、云环境配置、VUE
  8. React父传子、子传父
  9. Internet选项 添加信任站点
  10. 除去发票中的红色印章(C++,Open CV 4)