计算机图形学GAMES101(十)几何(曲线与曲面)

显示几何

显示几何的表示方法:

  1. 点云(Point Cloud)
    不把一个物体的表面用平面来表示,而是用很密集的点来表示。当点足够多时就可以表示一个平面。通常用在扫描中
    在这里插入图片描述
  2. 多边形网格(Polygon Mesh)

存储顶点和多边形(通常是三角形或四边形)
更容易处理/模拟
自适应采样更复杂的数据结构
图形中最常见的表示方式
在这里插入图片描述

曲线(Curves)

  1. ⻉塞尔曲线(Bézier Curves)
    P0为起始点,P3为终止点,P1,P2为控制点,蓝的的线为表示的曲线,该曲线要经过起始点和终止点,但是不要求经过控制点。
    在这里插入图片描述

怎么用任意个数的点画出贝塞尔曲线

德卡斯特里奥算法(de Casteljau Algorithm)
在这里插入图片描述

假设起点在时间0,终点在时间1,要画出这条曲线就是要找出时间t=0~1时,在空间中对于的点的位置。
首先找出t在0到1上的位置(假如时1/3)然后将b0看作0,b1看作1,然后在b0b1找到t对应的位置b01,即1/3处。
同理在b1b2上也找到t相对于的点b11然后将它们连起来。
最后在b01b11上找到t对应的点b02。这就是在t时刻对应空间上的点了。找到时间0~1上所有的点然后连起来就可以得到曲线了。

在这里插入图片描述
多控制点的动态演示:
在这里插入图片描述

贝塞尔曲线的代数形式

b02代数形式的求解过程:
可以发现b02(t)=[(1-t)+t]2的展开式。
在这里插入图片描述
有n个控制点的展开式可以用下面的多项式描述
伯恩斯坦多项式(Bernstein polynomials):
在这里插入图片描述
对于三维空间中的曲线,求曲线上的点可以用下面的式子:
在这里插入图片描述
贝塞尔曲线的性质:

  • 当t=0时。在起点。t=1时,在终点、即b(0)=b0;b(1)=b3
  • 当控制点为4个时,起始点和终止点的切线分别是b(0)=3(b1-b0);b(1)=3(b3-b2)。
  • 想要对一条贝塞尔曲线做仿射变换,只需要对所有控制点做仿射变换然后重新绘制贝塞尔曲线即可。
  • 凸包性质:画出来的贝塞尔曲线必需要在控制点形成的凸包内。

在这里插入图片描述
凸包:
假设黑色的圈是被拉大的橡皮筋,然后松手,橡皮筋就会收缩到蓝线位置。蓝线所形成的多边形就是这些顶点的凸包。
在这里插入图片描述
蓝色的部分是控制点形成的凸包
在这里插入图片描述

逐段贝塞尔曲线

因为当控制点过多时,发现贝塞尔曲线并不好控制。
所以采用少量控制点来控制一段曲线,最后把所有曲线都连起来就得到了原本的曲线。

一般采用三次贝塞尔曲线(4个控制点)成为一段。
在这里插入图片描述
第一段的终点等于第二段的起点这种连续称作C0连续。(相对于函数值相等)
在这里插入图片描述
第一段的终点等于第二段的起点,而且切线也要连续(相对于函数一阶导数相等)
在这里插入图片描述

曲面

贝塞尔曲面
在这里插入图片描述
由4*4个控制点的得到的曲面:
在这里插入图片描述

首先对每一列的四个控制点生成一条曲线,然后把得到的四个点又认为是另外一条曲线的控制点,又可以得到一条曲线,该曲线滑动所经过的平面就是贝塞尔曲面。
请添加图片描述
具体流程:
在这里插入图片描述
如何找到贝塞尔曲面上的任何一个点:
首先找到四条曲线上时间u的点(对应图片中4个蓝色的点),然后再在蓝色曲线上找时间v所对应的点。所以一个曲面上的点可以用(u,v)来表示。
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值