首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用cgal triangulation_3定位?

如何使用cgal triangulation_3定位?
EN

Stack Overflow用户
提问于 2012-11-27 21:47:58
回答 1查看 941关注 0票数 0

嗨,我用Delaunay_triangulation_2和Delaunay_triangulation_3来寻找插值点。我找到了如何为Delaunay_triangulation_2使用locate:

代码语言:javascript
复制
Locate_type loc;
int li;
CgalPoint point(_params[0], _params[1]);
Face_handle handle = delaunay.locate(point, loc, li);

if(loc == Delaunay::VERTEX)
{
    MyData data = _handle->vertex(_li)->info();
}
else if(loc == Delaunay::EDGE)
{
    MyData data1 = handle->vertex(handle->cw(li))->info();
    MyData data2 = handle->vertex(handle->ccw(li))->info();
}
else if(loc == Delaunay::FACE)
{
    MyData data1 = handle->vertex(0)->info();
    MyData data2 = handle->vertex(1)->info();
    MyData data3 = handle->vertex(2)->info();
}

那些关于cw和ccw的技巧对我来说是不直观的。

在使用Triangulation_3时,我在实现EDGE、FACET和VEREX案例时遇到了问题。

代码语言:javascript
复制
    Locate_type loc;
int li,lj;
Cell_handle handle = delaunay.locate(point, loc, li, lj);

switch(loc)
{
    case Delaunay::CELL:
    {
        for(int i = 0; i < 4 ; ++i)
            MyData data = handle->vertex(i)->info();
        break;
    }
    case Delaunay::EDGE:
    case Delaunay::FACET:
    case Delaunay::VERTEX:
        assert(false);
}

我的测试显示,case Delaunay::VERTEX的行为与Triangulation_2中的行为相同。

Triangulation_3给出了不同的句柄类型,然后是Triangulation_2。我需要在这里使用cw和ccw技巧吗?

医生:

如果查询位于面、边或顶点上,则返回对其边界具有查询的单元格之一。3.html

我想得到两个有我的查询的边缘点和三个脸点(万一其他东西被返回,那么Delaunay::CELL)。如何从“其中一个单元格对其边界进行查询”中获得它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-28 07:18:57

关于什么是一个面和一个边的文档在三角剖分的组合部分中。

代码语言:javascript
复制
    if(loc == Delaunay::VERTEX)
    {
        MyData data = handle->vertex(li)->info();
    }
    else if(loc == Delaunay::EDGE)
    {
        MyData data1 = handle->vertex(handle->vertex(li))->info();
        MyData data2 = handle->vertex(handle->vertex(lj))->info();
    }
    else if(loc == Delaunay::FACET)
    {
        MyData data1 = handle->vertex( (li+1)%4 )->info();
        MyData data2 = handle->vertex( (li+2)%4 )->info();
        MyData data3 = handle->vertex( (li+3)%4 )->info();
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13593732

复制
相关文章

相似问题

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