11 Geometry(Curves and Surface)

发布时间 2023-04-15 17:44:01作者: ETHERovo

关键点

  • Bezier Curves
  • Bezier Surfaces

1. Bezier Curves 贝塞尔曲线

用一系列的控制点定义一个曲线,并且定义了一系列控制。
如下定义起止点为p0、p3,且定义起始切线,则绘制出一条曲线。

1.1 de Casteljau Alogrithm

  • Three input points
    定义一个时间t,然后取b0b1与b1b2的相应比例位置,得到b01b11,然后对其按t划分得到b02,则为贝塞尔曲线在t时刻的位置。
  • Four input points
    同样在三个直线上找到分割点,然后对分割点得到的两个直线在做分割,最后在这个线段上分割,得到t时刻位置。

1.2 Algebraic Formula

de Casteljau Alogrithm是在对每层控制点做线性插值。

可见贝塞尔曲线上的点是所有控制点的线性组合。

可见系数是(s+t)^n的展开式,即Bernstein form伯恩斯坦多项式。此外,三维空间一样适用。

1.3 性质

  • 起止点确定
  • 起止点切线确定(系数取决于点数-1)
  • 仿射变换与贝塞尔曲线可以交换顺序(投影不可以)
  • 凸包性质:贝塞尔曲线的点一定在给定控制点的凸包内(凸包指包含给定点的最小凸多边形)。

1.4 Piecewise Berzier Curves 逐段贝塞尔曲线

当控制点增多时,不容易画出贝塞尔曲线,因此考虑到是用少量控制点画出贝塞尔曲线的一段,一般每四个控制点画一段,且各段之间首尾相接,即Piecewise cubic Verzier。为了保证各段之间几何连续且切线连续,要求首尾导数大小方向一致。

  • C0连续:首尾相接
  • C1连续:切线一直

1.5 其他曲线

1.5.1 Spline 样条

  • B-spline(basis spline)具有局部性,即改变控制点只会影响局部范围。

2. Bezier Surfaces

  • 使用4x4共16个点,分别对4行得到Berzier Curves,然后对对应水平时刻t的四个点再做贝塞尔曲线,得到曲面。
  • 使用最广泛的还是mesh网格。

来源

[1]Games101. 闫令琪