构建标量场函数为了演化(逆收缩)
其中 r^2 就是球函数
\(r^{2}=\left(x-c_{x}^{i}\right)^{2}+\left(y-c_{y}^{i}\right)^{2}+\left(z-c_{z}^{i}\right)^{2}\)
\(R_i=\alpha r_i\) 其中\(r_i\)是球i的半径\((c_x^i, c_y^i, c_z^i)\)是球的中心坐标,\(\alpha\)是1.5应该就是一个系数。
标量场定义为满足下面公式的东西。
\(\mathcal{I}(\boldsymbol{x})=\sum_{i=1}^{n} f_{i}-T=0\)
其中\(T\)是门限参数,门限参数控制着演进网格多接近标量场。一个更大的T降维生成更瘦的结果。
初始的网格图2C,定义为要演化的网格。
具体而言点在表面移动的轨迹被认为时间t的函数x(t)
其中 \(d \boldsymbol{x} / d t\) 认为是速率。\(\boldsymbol{n}=-\nabla \mathcal{I} /|\nabla \mathcal{I}|\)
被认为是法向量,\(\mathcal{I}\) 被认为是标量场。\(\mathcal{F}(\boldsymbol{x}, \boldsymbol{n}, \mathfrak{K}, \mathcal{I}, \cdots)\) 是一个带符号的标量函数(运动速度函数)依赖于标量的属性包括位置和法向量曲率和标量场等等。典型的S(0)是初始化网格。
运动速度函数\(\mathcal{F}\) 被标量场和一个切线水平集决定。公式如下
这公式意味着顶点演化的更快如果它原理切线水平集。区域函数在这个公式中控制着演化速度对不同区域的自适应。
标量场靠近小球会比靠近打球更加密集。在当前的系统中。\(f(\kappa)=1/\left(1+\left|\kappa_{1}\right|+\left|\kappa_{2}\right|\right)\)表现的很好\(\kappa_{1}\) 和 \(\kappa_{2}\)是顶点 \(x\) 的主曲率。
一个顶点\(\boldsymbol{x}(t)\)在当前的网格面S(t)演进如下所示
\(\Delta t\) 是时间间隔防止出现震荡情况,我们限制的迭代的次数。公式从另一篇论文CFL中导出
同时我们限制\(\Delta t\)的最小值
step 定义为
\(step =\min \left\{r_{i}\right\} / 2^{k}\) k是细分次数。最小的step定义为最小的球面半径
即
double step = getMinRadius(root, root->getValue()->radius) / pow(2, subdivisionLevel);
网格演进终止与表面接近标量场。演化工程在接近表面的时候很快。