3架飞机与cgal的交叉口

时间:2017-02-16 16:23:19

标签: c++ boost cgal

我正在编码以获得3个飞机与cgal的点交叉。

然后我有了这段代码。

Plane_3 suelo(Point_3(0,0,0), Vector_3(0,0,-1));    
Plane_3 principal( Point_3(0,0,0),Vector_3(0,1,0)); 
Plane_3 lateral3(Point_3(0,5,0),Vector_3(-1,0,0));  
boost::optional<boost::variant<Point_3, Line_3, Plane_3>> res = CGAL::intersection(suelo, principal, lateral3);

if (res!=boost::none)
{
    qDebug(" TRACKING 001 ");
    qDebug("\n");
    if (const Plane_3* pl = boost::get<Plane_3>(&(*res)))
    {
        qDebug(" TRACKING 002 ");
        qDebug("\n");
    }
    else if ( const Line_3* l = boost::get<Line_3>(&(*res)))
    {
        assert(l!=NULL);
        qDebug(" TRACKING 003 ");
        qDebug("\n");
    }
    else if ( const Point_3* p = boost::get<Point_3>(&(*res)))
    {
        qDebug(" TRACKING 004");
        std::cout<<"el punto es:"<<p<<std::endl;
        qDebug(" TRACKING 005");
        K_01::RT y = p->y();
        std::cout<<"el punto y es:"<<p->y()<<std::endl;
        qDebug(" TRACKING 006");
        std::cout<<"el punto x es:"<<p->x()<<std::endl;
        qDebug(" TRACKING 007");
    }
}

我手动计算它,我知道结果是一个点(0,0,0)

我认为这是好方法但是当我尝试访问此计算点的值x,y,z时,它没有任何内容。

有人能帮助我找到错误吗?

另一方面, 我想计算所有平面的所有点交点并将它们存储在某个结构中。

有人能告诉我,最好的办法是什么? 在我的情况下,我想存储作为多维数据集一部分的所有点交叉点。

我读了这个立方体的所有平面并生成了这个立方体的所有点。

你能帮帮我吗?

0 个答案:

没有答案