首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算任意多边形内的几何交叉场?

如何计算任意多边形内的几何交叉场?
EN

Stack Overflow用户
提问于 2015-08-30 05:32:58
回答 2查看 418关注 0票数 0

我很难找到一种方法来计算任意多边形内的“交叉场”。由一篇论文定义的交叉字段是与域边界(在本例中为多边形)切线的最光滑域,我在四重拓扑文件中发现了很多,但令人惊讶的是,即使在维基百科,我也能找到交叉域的定义。我有图像,但由于我是新来的,系统说,我需要至少10个声誉点来上传图片。

有什么想法吗?我认为这可能是类似于插值的东西?给定一个内点,确定与每条边的距离,并将每条边的切线和垂直向量按距离进行积分或加权。(事实上还有其他因素),但还可能存在其他更简单的方法吗?提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2015-08-30 07:57:19

代码语言:javascript
复制
//I've come up with something like this (for the 3D case), very raw, educational purposes
float ditance2segment(Vector3D p, Vector3D p0, Vector3D p1){
   Vector3D v = p1 - p0;
   Vector3D w = p - p0;
   float c1 = v.Dot(w);
   if (c1 <= 0)
      return (p - p1).Length();
   float c2 = v.Dot(v);
   if (c2 <= c1)
      return (p - p1).Length();

   float b = c1 / c2;
   Vector3D pb = p0 + b*v;
   return (p - pb).Length();

}
void CrossFieldInterpolation(List<Vector3D>& Contour, List<Vector3D>&   ContourN, Vector3D p, Vector3D& crossU, Vector3D& crossV){
    int N = Contour.Amount();   
    for (int i=0; i < N; i++){
        Vector3D u = Contour[(i + 1) % N] - Contour[i];     
        Vector3D n = 0.5*(ContourN[(i + 1) % N] + ContourN[i]); 
        Vector3D v = -Vector3D::Cross(u,n); //perpendicular vector  
        u = Vector3D::Normalize(u);
        n = Vector3D::Normalize(n);
        v = Vector3D::Normalize(v);

        float dist = ditance2segment(p, Contour[i], Contour[(i+1)%N]);

        crossU += u / (1+dist); //to avoid infinity at points over the segment
        crossV += v / (1+dist);
    }
    crossU = Vector3D::Normalize(crossU);   
    crossV = Vector3D::Normalize(crossV);
  }
票数 0
EN

Stack Overflow用户

发布于 2015-09-02 21:17:12

您可以检查我正在开发的OpenSource图形软件,它实现了在我的研究团队中开发的“周期全局参数化”算法1。您也可能对下面的研究文章感兴趣,我们最近开发了2,3种算法。

石墨网站:http://alice.loria.fr/software/graphite

如何使用周期全局参数化:http://alice.loria.fr/WIKI/index.php/Graphite/PGP

1

2

3

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32293508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档