B-spline Curves 学习前言与动机(1)
B-spline Curves 学习之前言
本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习。
(原来博客网址:http://blog.csdn.net/tuqu/article/details/4749586)
原来的博主翻译还是很好的,所以前几章节直接借鉴参考原博主的内容。
B-spline Curves Notes
本 教程是关于B-样条曲线(B-spline Curves)的教程。B-样条曲线在计算机视觉(computer vision ),计算机图形学(Computer Graphics ),计算机辅助设计(Computer-Aided Design ),计算几何(Computational Geometry ) ,可视化(Visualization)等许多领域有着广泛应用。
1. B样条曲线——动机
考虑设计一个花瓶的剖面图。下图左边是11次(degree)的贝塞尔曲线;但是它很难弯曲瓶颈到线段 P4P5。当然,我们可以在这个线段附近增加控制点来增加该区域的权重。但是这会增加曲线的次数(degree)。许多情况下,不值得使用如此高次 (degree)的多项式。
如前面讨论过的贝塞尔曲线的导数 ,我们可以将两个贝塞尔曲线连接起来。只要第一条曲线的最后一段和第二条曲线的第一段有相同方向,我们至少可以获得 G1 连续性,因为切向量有相同方向但可能有不同的长度(即,如果长度相同,它就是C1 连续的)。上边中间图使用了这个思想。它有3个3次贝塞尔曲线段,连接点用黄色矩形框标记。这说明有满足 G1 连续条件的多重低阶贝塞尔曲线段,我们可以设计出复杂形状。但是,保持 G1 连续条件会是乏味和不受欢迎的。
有没有可能我们仍用更低阶曲线段而不用考虑 G1 连续条件?
B-样条曲线是贝塞尔曲线的推广且正是为了解决这个问题的。上边右图是一个8控制点的3次B-样条曲线。实际上,由5条3次贝塞尔曲线段连接起来形成了由 控制点定义的B-样条曲线。 上图中,那些小点把B-样条曲线划分为贝塞尔曲线段。可以像贝塞尔曲线那样移动控制点来修改曲线的形状。我们也可以修改曲线的细分 (subdivision)。因此B-样条曲线有更高阶曲线设计的自由度。
直接细分(Subdividing)曲线是很困难的。因此,我们细分曲线的定义域。因此,如果曲线的定义域是[0,1],这个闭区间被称为节点(knots)的点细分而成。设这些节点是 0 <= u0 <= u1 <= ... <= um <= 1。那么点C(ui)的曲线细分如下图所示,因此,修改[0,1]的细分会改变曲线的形状。

总之,为了设计一个B-样条曲线,我们需要一系列的控制点,一系列的节点和一系列的系数,每个系数对应一个控制点,所以所有曲线段连接在一起满足某个连续 条件。系数的计算可能是最复杂的步骤因为它们必须保证某个连续条件。幸运的是,这个计算在本课程中不需要。我们只需要知道相关特性用于B-样条曲线的推理就可以了。
B-spline Curves 学习前言与动机(1)的更多相关文章
- 构建高可用web站点学习--前言
前言:本人对于提高web站点的访问量等的有很浓厚的兴趣,也学习了将近一年的时间,希望能总结点东西,虽然很多东西都是从书籍和资料中学习的,而不是原创,但是这是我总结的一点感悟和进行的分类吧.而且可能思路 ...
- B-spline Curves 学习之B样条曲线的移动控制点、修改节点分析(7)
B-spline Curves: Moving Control Points 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习 ...
- B-spline Curves 学习之B样条曲线的系数计算与B样条曲线特例(6)
B-spline Curves: Computing the Coefficients 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关 ...
- B-spline Curves 学习之B样条曲线性质(5)
B-spline Curves: Important Properties 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习. ...
- B-spline Curves 学习之B样条曲线定义(4)
B-spline Curves: Definition 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习. (原来博客网址:h ...
- Flask学习-前言
前言 使用Flask断断续续加起来快一年了,但是一直没有从源码层去了解其实现原理.加上自己python基础不扎实,所以准备从看一个开源项目开始,希望能够从中窥得武功精髓,让自己水平更上一层楼. Fla ...
- B-spline Curves 学习之B样条基函数的定义与性质(2)
B-spline Basis Functions 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习. (原来博客网址:http ...
- B-spline Curves 学习之B样条曲线的导数(8)
Derivatives of a B-spline Curve 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习. (原来博客 ...
- B-spline Curves 学习之B样条基函数计算实例(3)
B-spline Basis Functions: Computation Examples 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完 ...
随机推荐
- unity代码添加动画,并传参数
测试界面 button一个 sprite一个 测试代码 public class BgObject : MonoBehaviour { void Start() { List<string> ...
- [模板]ST表浅析
ST表,稀疏表,用于求解经典的RMQ问题.即区间最值问题. Problem: 给定n个数和q个询问,对于给定的每个询问有l,r,求区间[l,r]的最大值.. Solution: 主要思想是倍增和区间d ...
- Java--不可覆盖的方法
私有方法不能被覆盖: 因为private被自动认为final,对子类是屏蔽的,那么子类中的相同方法就是一个新的方法,编译器不会报错但也不会按期望运行: public class ClassA { pr ...
- 【ZZ】C++静态库与动态库 | 菜鸟教程
C++静态库与动态库 http://www.runoob.com/w3cnote/cpp-static-library-and-dynamic-library.html
- 【UVA】11825 Hackers' Crackdown(状压dp)
题目 传送门:QWQ 分析 $ n<= 16 $ 显然是状压 然后搞一搞(靠着蓝书yy一下) 代码 #include <bits/stdc++.h> using namespace ...
- Spring Boot使用@Scheduled定时器任务
摘要: Spring Boot之使用@Scheduled定时器任务 假设我们已经搭建好了一个基于Spring Boot项目,首先我们要在Application中设置启用定时任务功能@EnableS ...
- 好记性不如烂笔头-linux学习笔记3mysql数据库导入导出
1 数据库文件导出 mysqldump -uroot -p123456 test > 1.sql 2数据库文件导入 mysql -uroot -p123456 test <1.sql 3 ...
- 个人tools封装
/** * jQuery 扩展 */(function ($) { $.fn.extend({ /** * 目标为任意对象元素 * 同时绑定单击和双击事件 */ bindClick: function ...
- eclipse 预览Android界面报错
This version of the rendering library is more recent than your version of ADT plug-in. Please update ...
- Git----时光穿梭机01
看这篇文章之前可以先阅读 https://www.cnblogs.com/cxq0017/p/9645944.html 创建版本库这篇文章 我们已经成功地添加并提交了一个readme.txt文件,现 ...