我在单位球面上有一组点,并且相应的一组值相等,为简单起见,为0和1.因此,我正在构造球体上一组的特征函数。通常,我有几个这样的集合,它们形成了球体的分区。图中给出了一个例子。
我想知道paraview是否可以找到单元格之间的边界并计算边界的长度和曲率。
我在一篇论文中读到,使用梯度重建,人们设法找到这种轮廓的曲率。我想如果能找到曲率,那么长度应该稍微简单一些。如果上述问题的答案是肯定的,我应该在哪里查找相应的文档?
答案 0 :(得分:1)
对于球体上的点,如果它们是基于大圆距离原理构建的,则意味着连接点的所有线都是最短距离,平面穿过球心。在这种情况下,角度可以计算为标量积的弧度。
R = 1;
angle = arccos(x1*x2 + y1*y2 + z1*z2);
length = R*angle;
可以使用slerp插值构建从p1到p2的参数线。
slerp(t) = sin((1.0-t)*angle)/sin(angle)*p1 + sin(t*angle)/sin(angle)*p2;
其中t
在[0 ... 1]范围内
在这种情况下,对于所有大圆线,曲率为1 / R.这将是我尝试的第一件事 - 尝试将实际边界与通过大圆方法制作的边界相匹配。如果匹配,那就是答案
链接
https://en.wikipedia.org/wiki/Great_circle https://en.wikipedia.org/wiki/Great-circle_distance https://en.wikipedia.org/wiki/Slerp
更新
如果是非大弧,我建议进行以下修改。建立穿过球体中心并与表面交叉的大弧面,在点之间形成很大的弧度。将轴固定为穿过这两个点的直线。开始沿上面提到的轴旋转大弧面,直到你得到连接两点的圆弧。此时您可以获得旋转角度,计算圆平面位置和半径r
,曲率为1/r
等