曲线平滑-B样条曲线
来源:互联网 发布:邳州网络直通车 编辑:程序博客网 时间:2024/05/16 18:13
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;}
0 0
- 曲线平滑-B样条曲线
- B样条曲线
- B样条曲线
- B样条曲线
- B样条曲线
- B样条曲线
- B样条曲线
- B样条曲线
- B-样条曲线:开曲线
- B-样条曲线:闭曲线
- B-样条曲线:定义
- B-样条曲线:特例
- 绘制B样条曲线
- [图形学] B样条曲线
- [图形学] B样条曲线
- Bezier曲线和B样条曲线的一些资料
- 曲线平滑-贝塞尔曲线
- B-样条曲线:重要性质
- 解决sqlite3插入数据很慢的问题
- WWDC之优化App启动速度
- 待转移
- Android通用的EmptyLayout-展示不用状态的界面
- jquery ajax 同步异步的执行
- 曲线平滑-B样条曲线
- Codeforces 388B Fox and Minimal path(构造)
- 数据库理论(2)之数据库事务
- 界面对应字段,绑定数据到gridview 显示 及删除功能 窗体事件 分页及键
- 子类,父类默认构造函数及带参构造函数的调用
- VI操作--跳到最后一行和跳到最后一行的最后一个字符
- 总结下最近Android混合开发的种种
- Java 4种数组复制方式的性能比较
- Extjs4 封装echarts组件 2016.8.31