mirror of https://github.com/CGAL/cgal
Test if there is something on the optional
This commit is contained in:
parent
6511f95999
commit
d71057ce96
|
|
@ -97,11 +97,11 @@ intersection(
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
//adj to an edge
|
//adj to an edge
|
||||||
if(points.size() == 4)
|
if(points.size() == 4) // plane outside of cub and just touching at the edge, and hence the endpoints of 4 other edges
|
||||||
{
|
{
|
||||||
return result_type(std::forward<Segment_3>(segments.front()));
|
return result_type(std::forward<Segment_3>(segments.front()));
|
||||||
}
|
}
|
||||||
//plane intersecting through an edge (not 2)
|
//plane intersecting through an edge (not 2) This then intersects 2 other edges in points
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Poly res(4);
|
Poly res(4);
|
||||||
|
|
@ -251,43 +251,51 @@ intersection(
|
||||||
CGAL::Plane_3<K> >::result_type Pl_pl_type;
|
CGAL::Plane_3<K> >::result_type Pl_pl_type;
|
||||||
|
|
||||||
std::vector<Line_3> plane_intersections;
|
std::vector<Line_3> plane_intersections;
|
||||||
Pl_pl_type pl_inter = CGAL::intersection(pl, Plane_3(cub.vertex(0),
|
Pl_pl_type pl_inter;
|
||||||
cub.vertex(1),
|
|
||||||
cub.vertex(5)));
|
if(pl_inter = CGAL::intersection(pl, Plane_3(cub.vertex(0),
|
||||||
if(const Line_3* line = boost::get<Line_3>(&*pl_inter)){
|
cub.vertex(1),
|
||||||
plane_intersections.push_back(*line);
|
cub.vertex(5)))){
|
||||||
}
|
if(const Line_3* line = boost::get<Line_3>(&*pl_inter)){
|
||||||
pl_inter = CGAL::intersection(pl, Plane_3(cub.vertex(0),
|
plane_intersections.push_back(*line);
|
||||||
cub.vertex(3),
|
}
|
||||||
cub.vertex(4)));
|
|
||||||
if(const Line_3* line = boost::get<Line_3>(&*pl_inter)){
|
|
||||||
plane_intersections.push_back(*line);
|
|
||||||
}
|
|
||||||
pl_inter = CGAL::intersection(pl, Plane_3(cub.vertex(0),
|
|
||||||
cub.vertex(1),
|
|
||||||
cub.vertex(3)));
|
|
||||||
if(const Line_3* line = boost::get<Line_3>(&*pl_inter)){
|
|
||||||
plane_intersections.push_back(*line);
|
|
||||||
}
|
|
||||||
pl_inter = CGAL::intersection(pl, Plane_3(cub.vertex(7),
|
|
||||||
cub.vertex(6),
|
|
||||||
cub.vertex(1)));
|
|
||||||
if(const Line_3* line = boost::get<Line_3>(&*pl_inter)){
|
|
||||||
plane_intersections.push_back(*line);
|
|
||||||
}
|
|
||||||
pl_inter = CGAL::intersection(pl, Plane_3(cub.vertex(7),
|
|
||||||
cub.vertex(4),
|
|
||||||
cub.vertex(3)));
|
|
||||||
if(const Line_3* line = boost::get<Line_3>(&*pl_inter)){
|
|
||||||
plane_intersections.push_back(*line);
|
|
||||||
}
|
|
||||||
pl_inter = CGAL::intersection(pl, Plane_3(cub.vertex(7),
|
|
||||||
cub.vertex(6),
|
|
||||||
cub.vertex(4)));
|
|
||||||
if(const Line_3* line = boost::get<Line_3>(&*pl_inter)){
|
|
||||||
plane_intersections.push_back(*line);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pl_inter = CGAL::intersection(pl, Plane_3(cub.vertex(0),
|
||||||
|
cub.vertex(3),
|
||||||
|
cub.vertex(4)))){
|
||||||
|
if(const Line_3* line = boost::get<Line_3>(&*pl_inter)){
|
||||||
|
plane_intersections.push_back(*line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (pl_inter = CGAL::intersection(pl, Plane_3(cub.vertex(0),
|
||||||
|
cub.vertex(1),
|
||||||
|
cub.vertex(3)))){
|
||||||
|
if(const Line_3* line = boost::get<Line_3>(&*pl_inter)){
|
||||||
|
plane_intersections.push_back(*line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (pl_inter = CGAL::intersection(pl, Plane_3(cub.vertex(7),
|
||||||
|
cub.vertex(6),
|
||||||
|
cub.vertex(1)))){
|
||||||
|
if(const Line_3* line = boost::get<Line_3>(&*pl_inter)){
|
||||||
|
plane_intersections.push_back(*line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (pl_inter = CGAL::intersection(pl, Plane_3(cub.vertex(7),
|
||||||
|
cub.vertex(4),
|
||||||
|
cub.vertex(3)))){
|
||||||
|
if(const Line_3* line = boost::get<Line_3>(&*pl_inter)){
|
||||||
|
plane_intersections.push_back(*line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (pl_inter = CGAL::intersection(pl, Plane_3(cub.vertex(7),
|
||||||
|
cub.vertex(6),
|
||||||
|
cub.vertex(4)))){
|
||||||
|
if(const Line_3* line = boost::get<Line_3>(&*pl_inter)){
|
||||||
|
plane_intersections.push_back(*line);
|
||||||
|
}
|
||||||
|
}
|
||||||
std::list<Segment_3> tmp_segs;
|
std::list<Segment_3> tmp_segs;
|
||||||
for(const auto& line : plane_intersections)
|
for(const auto& line : plane_intersections)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue