【Geometry】Introduction 计算机几何学(2)计算机图形学中的显式几何、贝塞尔曲线

发布于:2022-10-15 ⋅ 阅读:(606) ⋅ 点赞:(0)

课程来源:GAMES101-现代计算机图形学入门-闫令琪
Lingqi Yan
UC Santa Barbara

计算机图形学中的显式几何

[图片]

1. 点云

不考虑一个表面,每个模型都是实心的,点云的密度越大,物体的表面越明显。
理论上你的点足够密,就可以表示任何物体。
如何把点云变成三角形面,这是个问题。

[图片]

2. 多边形网络

存储顶点和多边形(通常是三角形或四边形)更容易进行处理/模拟,自适应采样更复杂的数据结构,可能是图形中最常见的表示
[图片]

Wavefront Object File

  • 只是一个指定顶点、法线、纹理坐标及其连通性的文本文件。
  • 简称Object File,通常用于图形学研究的文件格式。
  • 定义一系列的点,发现,纹理,并将它们对应起来(图中的f)——哪几个点形成三角形,分别用哪些纹理坐标,并且分别用哪些法线。
    [图片]

曲线

[图片]

让摄像机沿着某个定义好的曲线移动。
[图片]

矢量图:用曲线定义一个字体。

Bézier Curves 贝赛尔曲线

用一系列的控制点去定义某一个曲线。
[图片]

如何去画一条贝塞尔曲线

用任意多的点画出一条贝赛尔曲线——算法名de Casteljau Algorithm(这个算法名实在是没法翻译,因为是人名。。)
首先膜拜一下两位大佬:
在这里插入图片描述

想要画出这条曲线,知道这个曲线的点在任意一个时间t对应的位置即可。
[图片]

输入三个点, b 0 , b 1 , b 2 b_0,b_1,b_2 b0,b1,b2,并找一个时间 t t t,假设 t = 1 / 3 t=1/3 t=1/3,在 b 0 到 b 1 b_0 到b_1 b0b1 b 1 到 b 2 b_1到b_2 b1b2上分别找出 1 / 3 1/3 1/3的点,并把它们连起来。在连起来的线段上,继续寻找时间 t t t的位置,基本还是 1 / 3 1/3 1/3的位置,再点上一个点。至此,我们求得到的 b 0 2 {b_0}^2 b02就是我们要求的贝塞尔曲线在时间 t t t 上的位置。
[图片]

只要我们能画一个点,我们就能画出所有的点。这里不用考虑t不连续的问题,就当它是连续的好了。
把所有的点都找一遍,就找到了我们所求的贝赛尔曲线。
[图片]

当有4个点的时候也和上面方式类似,在每条线段上寻找时间 t ( t ∈ [ 0 , 1 ] ) t(t∈[0,1]) tt[0,1]的位置,并将它们连起来,再接着在新的线段上寻找时间 t t t的位置,直到最后一个点。

[图片]

很明显,寻找贝塞尔曲线在点 t t t的位置是一个递归的过程,当有4个点时,需要遍历3次。
[图片]

用以下动画可以表示绘制这个曲线的过程
三个点
在这里插入图片描述

四个点
在这里插入图片描述

计算贝塞尔曲线的代数公式

系数金字塔
[图片]

对于任意一个 t t t,都可以以系数金字塔的方式寻找出对应的点。
[图片]

例如:三个点绘制贝赛尔曲线
先前只是用现象描述了一下贝塞尔曲线的绘制,现在用数学公式将其表现出来。
[图片]

n n n阶贝塞尔曲线公式
[图片]

[图片]

Bernstein多项式:无论 t t t取何值,多项式的和一定为1.
[图片]

[图片]

本文含有隐藏内容,请 开通VIP 后查看

网站公告


今日签到

点亮在社区的每一天
去签到