图形学的数学基础(十六):几何图元-直线和光线

321 阅读3分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路

图形学的数学基础(十六):几何图元-直线和光线

几何表述

在计算机图形学中,描述几何形状的主要策略有两大类:隐式几何和显示几何。

隐式几何(implicitGeometryimplicit Geometry

通过隐函数的方式描述一个对象,一般采用f(x,y,z)=0f(x,y,z) = 0的定义方式,告诉了我们x,y,zx,y,z需要满足的关系。例如对于三维空间以原点为圆心的单位球可以这表示:

x2+y2+z2=1x^2+y^2+z^2 = 1

隐函数形式可以方便的通过将点带入函数,很方便的判断点是否在几何表面上,之内或之外。但是隐函数无法直观的告诉有哪些点是满足这种关系的。

1.jpg

  • 代数方法
  • CSG
  • distance Function
  • level Set Methods
  • Fractals

显式几何(explicitGeometryexplicit Geometry

描述几何的另外一种方式是参数方程。同样地,几何仍由函数定义,但这一次x,y,zx,y,z不是作为输入,而是作为输出。我们以二维平面的单位圆为例:

x(t)=cos2πtx(t) = \cos2\pi{t}

y(t)=sin2πty(t) = \sin2\pi{t}

当t从0变为1时,点(x(t),y(t))(x(t),y(t))将显示要描述的形状的轮廓:

2.jpg

另外一个例子,uv坐标映射为三维空间的x,y,zx,y,z

3.jpg

通常情况下,参数会被归一化为[0,1][0,1]之间。

显示几何跟隐式几何相反,它可以直观的告诉空间中的哪些点满足要求,但是对于空间中的一个点,它不好判定点是否在几何表面。

光线(RayRay

从现在开始将逐步展开介绍特定的几何图元。首先从最基本也是最重要的一个开始,线性段(LinearSegmentLinear Segment),有三种基本类型的线性段,分别为:

  • 直线:可以在两个方向上无限延伸
  • 线段:具有两个端点的直线的有限部分
  • 光线:具有原点并在一个方向上无限延申

光线定义

光线有两个属性,分别为起点和方向,那么在任意时间t(0<=t<0 <= t <\infin),光线到达的位置由以下方程定义:

Ray(t)=origin+td        (0<=t<)\textbf{Ray}(t) = \textbf{origin} + t\textbf{d}\;\;\;\;(0 <= t <\infin)

4.jpg

尽管矢量格式更紧凑,并且具有很好的属性,但是也可以为每个坐标写出一个单独的标量函数:

x(t)=originx+tdxx(t) = origin_x + td_x

y(t)=originy+tdyy(t) = origin_y + td_y

z(t)=originz+tdzz(t) = origin_z + td_z

直线

直线虽然简单,却有好几种不同的定义方式,这些定义从不同的角度理解直线。

斜截式(SlopeInterceptSlope-Intercept

斜截式是一种在二维中表达直线的形式,符号mm表示竖直高度与水平高度的比率(斜率),y0y_0 表示y轴截距,是直线与y轴交叉的位置。

y=mx+y0y = mx + y_0

5.jpg

注:垂直线有无限斜率(x=nx = n),无法用y=mx+y0y = mx + y_0的方式表达,可以通过以下略有不同的隐函数解决这个奇点问题:

ax+by=dax + by = d

点乘法

ax+by=dax + by = d可以看作p[xy]点p\begin{bmatrix} x\\ y\\ \end{bmatrix}和矢量n[ab]n\begin{bmatrix} a\\ b\\ \end{bmatrix}的点积,即:

pn=d\textbf{p}\cdot\textbf{n} = d

根据矢量点积的定义,pn\textbf{p}\cdot\textbf{n}等于p\textbf{p}n\textbf{n}上投影的长度:

6.jpg

矢量n^\hat{n}是与直线垂直的的单位矢量。d是从原点到直线的有符号垂直距离。任何投影到n^\hat{n}的长度等于dd的点都满足直线方程。这里之所以采用有符号距离,意思是如果直线位于和法线点相同的原点的一侧,则dd为正,随着dd的增加,直线将沿着n^\hat{n}的方向移动。

垂直平分线(Perpendicular  BisectorPerpendicular\;Bisector

定义直线的最后一种方式是作为两点的垂直平分线:

7.jpg

参考

《3D数学基础》图形和游戏开发(第二版)

GAMES101 -现代计算机图形学入门-闫令琪