矢量体一直是困扰作者的一个难题,为了对前面的学习做个简要的总结并进一步讨论,记录下了这一篇笔记。
切水果的游戏中,我们得手指不管从何种方向去切割水果,它都只能够被分割成固定的两块,甚至在fps射击游戏中被击碎成小片的玻璃片,也只会散落成同样的一滩。这是因为这些模型本身就是为了被击碎而创造的,它出现在我们游戏的视野中时,其预制件就只能够加载固定碎片的动画了。这在现实中看来是非常不合理的。
有向流形
想要解决这种实时计算切分块的问题,我们可以尝试将两半的水果看做独立的两块。我们知道,将一块磁铁沿着虚线剪开,就会形成两边新的磁极。 像蚯蚓一样切成了两段就变成了有头有尾的两条。
那么,如果一块有方向的面被切成了两半,是否能够用方向表示两块新的平面呢?下图为一有向的流形平面,其每一条边都是矢量,逆时针衔接闭合为矩形。由虚线切开后,即可看作两块有向闭合流形面。
不管是磁极还是流形面,他们都有一个明显的关键特征:都是“闭合”的。反过来,我们同样也可以通过闭合的特征来计算我们想要的被切割后的多边形或者多面体。
简单四面体
有方向的线段叫矢量。
有方向的面叫流形面。
就暂且把有方向的体就叫做矢量体。线段的方向很容易理解,分别是朝向线段的两个端点;而多边形平面的方向则是顺时针与逆时针。那么,多面体的方向是怎样定义的呢。下面,我们以简单的四面体为例,来讨论一下矢量体的方向是朝向何方的。
简单四面体存在六条边,四个面,每个面分别对应三条边界。我们假设这个体中的每个流形面都是逆时针方向的,可以发现,无论矢量体有多少条边,在一个完整的封闭多面矢量体中,其每条边一定存在两个方向的矢量。通过右手定则规定他的方向是正交向外的。
由上图的矢量体解析我们可以理解:矢量体也是有着两个方向,分别是朝向几何体外部和朝向几何体内部,或者说这个多面体是顺时针或逆时针的。
多面体的封闭性质
由简单四面体引申到更加复杂的多面体,我们可以发现,不管多么复杂的多面体,不论是凸起还是凹陷的,均可以直接套用矢量体的定义来解释这块多面体的朝向是朝内还是朝外。每一条边都有且仅有两次相反的向量。
这种特征适用于所有的多面体,甚至是中间有贯通的形状,只要其是一个封闭的多面体。当我们使用右手竖大拇指朝向体的外侧时,其余四指所指的方向即为矢量面的环流方向。这种定义的意义在于其能够检测多面体是否完整。
现在我们将尝试如何将切面构成多面体。
从空间众多面中随机的抽取某些逆时针的流行面,如何判断这些面是否能够构成块体呢?
将这些流行面对应的所有矢量集合为一组。
如:
{A→B, F→A, D→E, E→F, C→B, A→F, B→C, F→E, B→A, E→D, D→C, C→D }
上表为一组流行面的所有矢量(共六对),此时,当组内的所有矢量都有且仅有一对方向相反的矢量时(无多余未配对矢量时),则我们所选取的流行面们一定能够组成一块封闭的完整多面体。
参考配对的参考流程如下:
此外,对于有向的流形,我们在很多的数学应用中,也会用这种思想进行积分得到这个面的面积。如斯托克斯公式。