我正在编码以获得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时,它没有任何内容。
有人能帮助我找到错误吗?
另一方面, 我想计算所有平面的所有点交点并将它们存储在某个结构中。
有人能告诉我,最好的办法是什么? 在我的情况下,我想存储作为多维数据集一部分的所有点交叉点。
我读了这个立方体的所有平面并生成了这个立方体的所有点。
你能帮帮我吗?