几何笔记

本文最后更新于:8 个月前

隐式几何表示

往往通过一个方程来定义,不够直观,但存储量小,运算简单。

显示几何表示

要么直接定义,要么通过一些参数来定义。

点云

一堆点,要构成面需要极大的密度。

通常用于三维扫描,后续再通过其他方法将点云转化为其他表示方法。

多边形网格

使用三角形或其他多边形表示(最常用)

贝塞尔曲线

通过参数来显示表示几何的实例

几何意义:很好理解但不太好描述,百度找图(

代数表示(用参数 $t$ 来表示时间/比例,$t\in [0, 1]$)推导:

  • 有 $n+1$ 个控制点 $b_{0..n}$,控制一条 $n$ 次贝塞尔曲线。
  • 首先对于任意点 $A$(非两边的点),在一次取点过后,会将 $tA$ 分配到一边,$(1-t)A$ 分配到另一边。
  • 那么一个点 $A$ 最终能分配到答案中多少,可以看做是一个金字塔状的路径选取的问题。
  • 然后就不难从中发现二项式了。
  • 最终结论为:$ans = \sum_{i=0}^{n}C_n^ib_it^i(1-t)^{n-i}$

贝塞尔曲线性质:

  • 仿射变换不变性:对贝塞尔曲线仿射变换,等价于对几个控制点仿射变换后再生成贝塞尔曲线
  • 贝塞尔曲线始终在控制点的凸包内
  • 贝塞尔曲线的阶次等于控制点数-1,曲线的起点/终点与第一个/最后一个控制点重合。

分段贝塞尔曲线

贝塞尔曲线的一大缺点是没有局部控制能力,任一控制点的变化都会影响到整个曲线(B样条曲线能解决这个问题),有时也会用分段贝塞尔曲线解决。

如PS的钢笔工具就是每段使用四个控制点,每段画三次贝塞尔曲线(Cubic Bezier Curve)

两端段贝塞尔曲线交接的部分,相交处的控制点连线若平行,即可平滑连接,若连线长度也相同,就能使二阶导数也连续。

显然,曲线应当可以表示成关于 $t$ 的 $n$ 阶多项式 $G(t)$

例如对于 $n = 3$,$G(t)=(1-t)^3b_0+3t(1-t)^2b_1+3t^2(1-t)b_2+t^3b_3$
$$
\begin{bmatrix}
-1&3&-3&1\
3&-6&3&0\
-3&3&0&0\
1&0&0&0
\end{bmatrix}
\times
\begin{bmatrix}
b_0\
b_1\
b_2\
b_3
\end{bmatrix}
=
\begin{bmatrix}
p_3\
p_2\
p_1\
p_0
\end{bmatrix}
$$
我们可以用矩阵计算得出各次系数 $p$,$G(t)=p_3t^3+p_2t^2+p_1t+p_0$,此处的系数为一个vec2。

后面我们可以把其他形式的曲线(如B样条)也写成这种矩阵形式,然后轻松在两者之间转化。

B样条曲线

三次B样条曲线的矩阵表达如下:
$$
\frac1{6}\begin{bmatrix}
-1&3&-3&1\
3&-6&3&0\
-3&0&3&0\
1&4&1&0
\end{bmatrix}
\times
\begin{bmatrix}
b_0\
b_1\
b_2\
b_3
\end{bmatrix}
=
\begin{bmatrix}
p_3\
p_2\
p_1\
p_0
\end{bmatrix}
$$

贝塞尔曲面

以4x4控制点为例:先将四列分别画出贝塞尔曲线,然后每一行取出四个点作为新贝塞尔曲线的控制点,得到一行贝塞尔曲线,扫出一个曲面。

贝塞尔曲面可以用参数 $u,v$ 来表示。

网格细分

用于将网格变得更平滑,本质上是一种模糊操作,并没有更多的信息量。在已有网格能大致表示物体轮廓时,用网格细分使得它更平滑。

Loop 细分

Loop是人名

细分:在每条三角形边上取一个新的顶点,形成 4 倍顶点。

调整:对顶点位置进行一个“模糊”,思路如下:

对于新顶点,它在两个三角形的重边上,设重边上的两个点为 $A,B$,重边对的两个点为 $C,D$,新顶点的位置为 $3/8\times (A+B)+1/8 \times (C+D)$

系数取决于调参经验,总之就是加权平均。

对于原顶点,它由相邻的原顶点和自身加权平均得来,具体设 $n$ 为度数,$u$ 为相邻顶点的比例系数,通常设 $u = 3/(8n)$,特别当 $n=3$ 时设 $u=3/16$

最终位置为 $(1-nu)ori+u\sum adj$

Catmull-Clark细分

多边形网格的细分

每轮细分在每条线上产生一个点,每个面上也产生一个点。

以一定的权值来调整新点的位置。

其特点是:经过一轮变换后,所有面都会变成四边形。

网格简化

在尽可能保留信息的前提下简化网格,常用于LOD。

边坍缩

几何笔记
http://www.lxtyin.ac.cn/2023/02/26/几何杂记/
作者
lx_tyin
发布于
2023年2月26日
许可协议