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