首页 关于
树枝想去撕裂天空 / 却只戳了几个微小的窟窿 / 它透出天外的光亮 / 人们把它叫做月亮和星星

几何

学习几何的笔记和一些个人思考。这里主要在记录各种结论,偶尔会抄一些证明方法。

对于 \(\mathbb{R}^3\) 空间中的三个向量 \(\boldsymbol{a}, \boldsymbol{b}, \boldsymbol{c}\),其点乘和叉乘的存在如下的关系:

$$ \begin{array}{rcl} \boldsymbol{a} \cdot \boldsymbol{b} & = & \boldsymbol{b} \cdot \boldsymbol{a} \\ \boldsymbol{a} \times \boldsymbol{b} & = & - \boldsymbol{b} \times \boldsymbol{a} \\ \boldsymbol{a} \cdot (\boldsymbol{b} \times \boldsymbol{c}) & = & (\boldsymbol{a} \times \boldsymbol{b}) \cdot \boldsymbol{c} \\ \boldsymbol{a} \times (\boldsymbol{b} \times \boldsymbol{c}) & = & (\boldsymbol{a} \cdot \boldsymbol{c})\boldsymbol{b} - (\boldsymbol{a} \cdot \boldsymbol{b}) \boldsymbol{c} \end{array} $$

欧拉公式: $$ \begin{array}{rcl} e^{i \theta} & = &\cos \theta + i \sin \theta \\ e^{i\pi} + 1 & = & 0 \end{array} $$

栅格与线性插值

摄影几何与空间变换

2D射影空间中的点、直线和圆锥曲线

点\(\boldsymbol{x}\)在直线\(\boldsymbol{l}\)上有方程\(\boldsymbol{x} \cdot \boldsymbol{l} = 0\)。在摄影空间\(\mathbb{P}^2\)中,点与线为对偶关系(dual)。 圆锥曲线可以用一个\(3 \times 3\)的对称矩阵写出,点\(\boldsymbol{x}\)在圆锥曲线\(C\)上有方程\(\boldsymbol{x}^T C \boldsymbol{x} = 0\)。

  • 两点\(\boldsymbol{x}, \boldsymbol{x}'\)共线\(\boldsymbol{l}\)可以通过叉乘得到\(\boldsymbol{l} = \boldsymbol{x} \times \boldsymbol{x}'\)。
  • 两线\(\boldsymbol{l}, \boldsymbol{l}'\)交点\(\boldsymbol{x}\)可以通过叉乘得到\(\boldsymbol{x} = \boldsymbol{l} \times \boldsymbol{l}'\)。
  • 圆锥曲线\(C\)上经过点\(\boldsymbol{x}\)的切线为\(\boldsymbol{l} = C \boldsymbol{x}\)。
  • 圆锥曲线\(C\)与切线\(\boldsymbol{l}\)的交点为\(\boldsymbol{x} = C^* \boldsymbol{l}\),其中\(C^*\)为\(C\)的共轭矩阵。

相关的实现参见代码: HomoPoint2.hpp, HomoLine2.hpp, HomoConic2.hpp

2D射影空间中的各种变换

根据变换的各种不变特性,我们把它们分成了等距变换相似变换仿射变换射影变换。 通过无穷远处\(\boldsymbol{l}_{\infty}\)的象,我们可以对射影变换进行仿射矫正。通过对偶圆锥曲线\(C_{\infty}^*\)的象,我们可以对射影变换或者仿射变换进行度量矫正。 具体的矫正方法和样例,将在后文中具体展开。

相关的实现参见代码: Projective2.hpp

3D空间中的直线
3D几何空间和变换

计算机辅助几何设计(Computer Aided Geometric Design, CAGD)

在 CAGD 中,曲线多多采用一种被称为基表述的特殊矢函数的形式: $$ \boldsymbol{p}(u) = \underset{i = 0}{\overset{n}{\Sigma}} \boldsymbol{a_i} \varphi_i(u) $$ 其中,\(\varphi_i(u)\)被称为基函数,决定了曲线的整体性质;\(\boldsymbol{a_i}\)称为系数矢量。 曲面通常是曲线的推广。可以表示称双参数形式的矢函数: $$ \boldsymbol{p}(u, v) = \underset{i = 0}{\overset{m}{\Sigma}} \underset{j = 0}{\overset{n}{\Sigma}} \boldsymbol{a_{ij}} \varphi_i(u) \psi_j(v) $$ 其中,\(\varphi_i(u)\)和\(\psi_j(v)\)分别是以\(u,v\)为变量的两组基函数。\(\boldsymbol{a_{ij}}\)为系数矢量。

CAGD中曲线的表述 考察空间中一个孤立的点是没有意义的,我们往往需要考虑定义若干个定义出形状特征的点的相对位置关系。

对于一个函数\(y = y(x)\),若它在某一点\(x_0\)处具有相等的直到\(k\)阶的左右导数,则称它在\(x_0\)处是\(k\)次连续可微的,或者说是\(k\)阶连续的,记做\(C^k\)。 函数的连续阶越高,就越光滑。

NURBS

非均匀有理B样条(Non-Uniform Rationall B-Splines, NURBS),已然是计算机图形用来描述、设计、交换数据的工业标准。很多国内和国际标准,比如 IGES、STEP、PHIGS都用NURBS描述几何特征。NURBS有如下的一些特征:

  • NURBS提供了一种统一的数学描述形式,可以表达解析形式的二次曲线和曲面,也可以描述车体、船壳等自由形状。
  • NURBS的设计很直观,基本上所有的工具和算法都可以很容易理解其几何内涵。
  • NURBS算法那快,更重要的是它是数值稳定的。
  • NURBS表示的曲线和曲面对于一般的几何变换(比如,旋转、平移、parallel and perspective)具有不变性。
  • NURBS是非有理B样条(nonrational B-splines)和有理及非有理贝塞尔曲线曲面(rational and nonrational Bézier curves and surface)的泛化。

得益于其优异的数学特性,NURBS在工业场景中得到了广泛的应用,在CAD/CAM/CAE等领域扮演者极其重要的角色。

贝塞尔曲线和曲面 贝塞尔曲线和曲面通过控制点和 Bernstein 多项式描述曲线和曲面,具有变换不变性(平移、旋转、缩放)。 可以通过 deCasteljau 算法计算指定点的插值。
B样条曲线和曲面 B样条是一种分段表述曲线曲面的方法,它是 B-样条基函数的线性组合,是贝塞尔曲线曲面的一般化。



Copyright @ 高乙超. All Rights Reserved. 京ICP备16033081号-1