曲线平滑-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图形设备接口加) ...
随机推荐
- 【记录】url 中出现特殊字符该怎么办
url中出现特殊字符+ URL 中+号表示空格 %2B 空格 URL中的空格可以用+号或者编码 %20/ 分隔目录和子目录 %2F ? 分隔实际的URL和参数 %3F % 指定特殊字符 %25 # 表 ...
- 深入理解yield
yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法. 只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子: 1 2 3 def ad ...
- python lambda简单介绍
python lambda 在python中,如果想要创建函数需要使用关键字def,而如果想要创建匿名函数,就需要使用lambda. lambda创建的函数和def创建的函数有什么区别? def创建的 ...
- 【CF398B】B. Painting The Wall(期望)
B. Painting The Wall time limit per test 1 second memory limit per test 256 megabytes input standard ...
- 韩梦飞沙Android应用集合 想法
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 那些收藏的图片 那些收藏的微博 那些收藏的音乐 定时短信 音乐列表汇 每天都是快乐的
- 【字符串哈希】The 16th UESTC Programming Contest Preliminary F - Zero One Problem
题意:给你一个零一矩阵,q次询问,每次给你两个长宽相同的子矩阵,问你它们是恰好有一位不同,还是完全相同,还是有多于一位不同. 对每行分别哈希,先一行一行地尝试匹配,如果恰好发现有一行无法对应,再对那一 ...
- codevs 1004 四子连棋 BFS、hash判重
004 四子连棋 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 在一个4*4的棋盘上摆放了14颗棋子,其中有7颗白色棋 ...
- iOS录音后播放声音小,AudioSessionInitialize failed,AudioQueueStart failed (-50)
方法1: UInt32 audioRoute = kAudioSessionOverrideAudioRoute_Speaker; AudioSessionSetProperty(kAudioSess ...
- 快速定位问题 Request无法获取参数
比如说最近开发甲修改了iframe标签的src,开发乙在设置src的时候传入了2个参数,通过iframe标签链接到这个页面时,开发乙调试时发现没有拿到任何参数值.然后开发乙百度了一下,发现iframe ...
- Vue集成微信开发趟坑:公众号以及JSSDK相关
首先,类库方面,Vue中引入JSSDK的话,请引入weixin-js-sdk,而不是weixin-jsapi,原因在于weixin-jsapi不是最新版:还要注意JS接口安全域名,不需要http前缀, ...