11、计算机图形学——几何(贝塞尔曲线与曲面)
一、贝塞尔曲线
1.1、简介
下图中蓝色的线就是贝塞尔曲线,每条贝塞尔曲线都有控制点(下图中有四个),贝塞尔曲线必须经过第1个和最后一个控制点,并且需要和第起止控制点相切
1.2、如何得到贝塞尔曲线
首先找到三个控制点
然后取线段b0b1上的一个点,获取的方法依然是线性插值
然后取线段b1b2上的一个点,获取的方法也是线性插值
得到两个线性插值的点后,连接着两个点,并在这两个点组成的线段上再次进行线性插值取点
将上图中线性插值出来的所有点B02都连接起来就是一条贝塞尔曲线了
四个控制点或者五个控制点都是同理
贝塞尔曲线线性插值的动画如下
如果最终得到的线性插值的点都用控制点来表示,那么,拥有三个控制点的贝塞尔曲线可以表示成如下形式
拥有四个控制点的贝塞尔曲线的行使如下
通过对系数的观察可知,n次贝塞尔曲线的参数是(t + (1-t))的n-1次方的展开
二、贝塞尔曲线的性质
1、必定经过起止控制点且与起终线段相切
2、具有仿射变换性质,可以通过移动控制点移动整条曲线,就是说将贝塞尔曲线的控制点经过仿射变换后,将变换后的控制点连起来之后,依然是个相同的贝塞尔曲线
3、贝塞尔曲线一定不会超出所有控制点构成的多边形,如下图所示,所有的贝塞尔曲线,一定在凸包里面(蓝色线里面)。
三、贝塞尔曲线的改进
当传统贝塞尔曲线的控制点增多时,贝塞尔曲线的形状变得难以控制
所以,就有人提出了分段处理的方法,当控制点很多时,将控制点分组,每组控制点分别绘制贝塞尔曲线,然后将这些贝塞尔曲线连接在一起,形成一个新的贝塞尔曲线
这种分段的方法可以更好的控制贝塞尔曲线的局部。但是容易产生尖点(也就是不可导点),所以,为了使贝塞尔曲线更加光滑,连接控制点处必须可导
四、贝塞尔曲面
贝塞尔曲面的绘制也是基于贝塞尔曲线,只不过新加了一个高度信息
以16个控制点为例,首先找到空间中16个控制点,每四个一组,就能得到在空间中横向四个灰色的贝塞尔曲线,之后,再进行纵向遍历,每个贝塞尔曲线上都取一个点,纵向绘制贝塞尔曲线,就能得到一个贝塞尔去面,示意动图如下
参考
GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩_bilibili
11、计算机图形学——几何(贝塞尔曲线与曲面)相关推荐
- [计算机图形学]几何:曲线和曲面(前瞻预习/复习回顾)
一.曲线 1.Bézier Curves-贝塞尔曲线 贝塞尔曲线也是一种显式的几何表示方法.贝塞尔曲线定义了一系列的控制点,致使确定满足这些控制点关系的唯一一条曲线:如上图定义的贝塞尔曲线满足 起始点 ...
- 计算机图形学中的曲线问题
文章目录 免责 前言 拉格朗日插值多项式 第一步:得到一个基函数 第二步:得到所有基函数 第三步:对所有基函数进行线性组合 举例验证 拉格朗日插值曲线绘制实践 三次埃尔米特插值多项式 第一步:得到第一 ...
- 计算机图形学【GAMES-101】5、几何(距离函数SDF、点云、贝塞尔曲线、曲面细分、曲面简化)
快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...
- 计算机图形学中的曲线问题——贝塞尔曲线的绘制
贝塞尔曲线的绘制 由于 CSDN 的博客修改字数的限制,我们不得不将这一部分放到一个新的博客中.原文详见: GGN_2015 计算机图形学中的曲线问题 贝塞尔曲线的几何作图法 在上面介绍儿时的回忆中, ...
- 【转】贝塞尔曲线和曲面
[转]贝塞尔曲线和曲面 原文地址:http://my.oschina.net/sweetdark/blog/183721 参数方程表现形式 在中学的时候,我们都学习过直线的参数方程:y = kx + ...
- 计算机图形学空间曲线,课程追忆之《计算机图形学》【曲线曲面篇】
大家好,距离上一篇博文将近一个月,时间过得好快,原本计划周更的,后面推到半月跟,实际到现在是月更,每次在准备写点什么的时候,都会被一些杂乱的事物打扰,哎,重度拖延症.懒癌晚期- 继上次述说了<计 ...
- 10、计算机图形学——几何介绍(曲面的分类以及示例)
一.隐式曲面及示例 隐式曲面顾名思义就是不能直接看到曲面的形状,而是通过表达式的方式来表示曲面.所以,该曲面的优势就是查找某个点是否在曲面上比较快,而该类型曲面缺点就是曲面的表达不直观 比如下面这三个 ...
- 音视频开发之旅(40)-贝塞尔曲线和曲面
目录 贝塞尔曲线基本知识 画贝塞尔曲线 让曲线动起来 画贝塞尔曲面 资料 收获 本篇最终实现效果如下: 篇外说明:由于有必要学习使用下kotlin,后续的java层代码实现尽量采用kotlin 一.贝 ...
- 计算机图形学 第9章 自由曲线曲面
第8章不学 目录 # 学习目标 # 消隐 ## 定义 1.线框模型 2.表面模型 3.实体模型 双表结构 定义三维顶点类 定义表面类 读入立方体的点表 读入立方体的面表 1.柏拉图多面体 柏拉图多面体 ...
最新文章
- Matlab相机标定并进行图像校正
- windows命令行设置环境变量
- 25 | 基础篇:Linux 磁盘I/O是怎么工作的(下)
- 滑动listview隐藏和显示顶部布局
- python编译成dll文件_用vc生成可被python调用的dll文件
- css 解析器 java_Java 的 CSS 解析器 jStyleParser
- java的jstl的标签库_java_jstl 标签库
- JBox2D 引擎 for Android 详解
- 1013.clion配置快捷提示模板
- mybatis mysql merge_使用Mybatis和druid连接池报错 merge sql error, dbType mysql, sql
- 发行版,distutils,setuptools和distutils2之间的区别?
- java异步判断数据库是否有重复字段值
- phpStudy3——往数据库中添加数据
- 高并发高负载系统架构-php篇
- 解决TIME_WAIT造成的服务器无法访问
- opencv同态滤波
- Oracle JDBC 驱动
- OA系统选型,明确需求是关键
- 解决关键词这个问题,ASO优化效果事半功倍
- linux , Shell 文件合并的命令