曲线平滑-B样条曲线 【转】
版权声明:本文为博主原创文章,未经博主允许不得转载。
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样条曲线 【转】的更多相关文章
- TeeChart曲线平滑 Line.Smoothed
需要注意的是,在加载点之前,需要设置Smoothed属性为false 等点加载完成之后,再设置Smoothed属性为true, //如果直接设置Smoothed为true再去加载点的话,曲线就完全不显 ...
- PR曲线平滑
两天写论文中,本来设计的是要画这个Precision-Recall Curve的,因为PRC是从信息检索中来的,而且我又做的类似一个检索,所以要画这个图,但是我靠,竟然发现不好画,找了很多资料等.最后 ...
- echarts 曲线平滑配置
来源:https://blog.csdn.net/sinat_36422236/article/details/62430114 series : [ { name:'your name', symb ...
- python的曲线平滑工具,及python画一条线中包含不同粗细不同颜色的画线方法
from scipy.signal import savgol_filter import matplotlib.pyplot as plt cc = savgol_filter(c, 99, 1) ...
- SVG矢量绘图 path路径详解(贝塞尔曲线及平滑)
以二次贝塞尔曲线的公式为例: js函数: //p0.p1.p2三个点,其中p0为起点,p2为终点,p1为控制点 //它们的坐标用数组表示[x,y] //t的范围是0-1 function qBerzi ...
- three.js 曲线
上几篇说了three.js的曲线,这篇来郭先生来说说three.js曲线,在线案例点击郭先生的博客查看. 1. 了解three.js曲线 之前已经说了一些three.js的几何体,这篇说一说three ...
- 深度掌握SVG路径path的贝塞尔曲线指令
一.数字.公式.函数.变量,哦,NO! 又又一次说起贝塞尔曲线(英语:Bézier curve,维基百科详尽中文释义戳这里),我最近在尝试实现复杂的矢量图形动画,发现对贝塞尔曲线的理解馒头那么厚,是完 ...
- svg 贝塞尔曲线图解(记录)
path路径绘制中,绘制贝塞尔曲线的命令包括: Q 二次贝赛尔曲线 x1,y1 x,y T 平滑二次贝塞尔曲线 x,y C 曲线(curveto) x1,y1 x2,y2 x,y S 平滑曲线 x2, ...
- GDI+编程说明及小结
原文地址:http://blog.csdn.net/byxdaz/article/details/5972759 GDI+(Graphics Device Interface Plus图形设备接口加) ...
随机推荐
- 2017-2018-1 20179202《Linux内核原理与分析》第九周作业
进程的切换和系统的一般执行过程 1.知识总结 (1)进程调度的时机: 中断处理过程直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule(). 内核线程是一 ...
- centos 安装php7、pecl 、swoole、redis拓展
一.更新yum源,安装php7 CentOS/RHEL 7.x: rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest- ...
- PHP7新特性 What will be in PHP 7/PHPNG
本文结合php官网和鸟哥相关文章总结: 官网:http://www.php7.ca/ https://wiki.php.net/phpng PHP7将在2015年10月正式发布,PHP7 ,将会是 ...
- 【2017多校训练08 1002】【HDOJ 6134】Battlestation Operational
典型的数列反演题. 运用莫比乌斯反演的一个结论 $[n = 1] = \sum_{d | n} \mu(d)$,将表达式做如下转化: $$ ans = \sum_{i=1}^n \sum_{j=1}^ ...
- bzoj hash+map+set
先对原串分组hash,查询就是看某一区间内是否出现某值. 可以每个值存一个集合,保存这个值出现的位置.(也可以建可持久化值域线段树) map<int,set<int> >很省事 ...
- Codeforces Round #356 (Div. 2) E. Bear and Square Grid 滑块
E. Bear and Square Grid 题目连接: http://www.codeforces.com/contest/680/problem/E Description You have a ...
- Jmeter实现webservice的接口测试
前提条件 测试的URL:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx 测试接口:getSupportCityString 获取城市的编码:htt ...
- div模拟selection标签 下拉列表
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- redis-py说明文件(转)
转自:http://blog.sina.com.cn/s/blog_6262a50e0101574h.html 原文:https://github.com/andymccurdy/redis-py r ...
- json 数据类型,后台在组数据时,错一个标点符号,前端都解析不出来。
json 数据类型,后台在组数据时,错一个标点符号,前端都解析不出来.