7
$\begingroup$

BoundaryMeshRegion is new function of version 10. I am not familiar with the function. I want to decide whether a point is inside or outside in the Boundary using RegionMember. This code is not able to work. why is it?

BoundaryMeshRegion[{{4, 4, 4}, {4, 4, 6}, {4, 6, 4}, {4, 6, 6}, {6, 4,
    4}, {6, 4, 6}, {6, 6, 4}, {6, 6, 6}}, 
 Polygon[{{2, 3, 1}, {6, 8, 7}, {2, 5, 6}, {1, 7, 5}, {4, 7, 8}, {2, 
    6, 4}, {2, 3, 4}, {6, 5, 7}, {1, 2, 5}, {1, 3, 7}, {3, 4, 7}, {8, 
    4, 6}}]]

BoundaryMeshRegion[{{4, 4, 4}, {4, 4, 6}, {4, 6, 4}, {4, 6, 6}, {6, 4, 4}, {6, 4, 6}, {6, 6, 4}, {6, 6, 6}}, Polygon[{{2, 3, 1}, {6, 8, 7}, {2, 5, 6}, {1, 7, 5}, {4, 7, 8}, {2, 6, 4}, {2, 3, 4}, {6, 5, 7}, {1, 2, 5}, {1, 3, 7}, {3, 4, 7}, {8, 4, 6}}]]

But this is able to work. What is different.

BoundaryMeshRegion[{{4, 4, 4}, {4, 4, 6}, {4, 6, 4}, {4, 6, 6}, {6, 4,
    4}, {6, 4, 6}, {6, 6, 4}, {6, 6, 6}}, 
 Polygon[{(*{2,3,1},{6,8,
   7},*){2, 5, 6}, {1, 7, 5}, {4, 7, 8}, {2, 6, 4}, {2, 3, 4}, {6, 5, 
    7}, {1, 2, 5}, {1, 3, 7}, {3, 4, 7}, {8, 4, 6}}]]

Blockquote

Are these bugs too?

Case 1

Graphics3D[{Opacity[0.5], tmp, Opacity[1], Red, PointSize[0.05], 
  Point[{2, 0, 0}]}, Boxed -> False]

Blockquote

tmp = RevolutionPlot3D[{2 + Cos[t], Sin[t]}, {t, 0, 2 Pi},
  PlotPoints -> 2]; tmp = 
 GraphicsComplex[tmp[[1, 1]], tmp[[1, 2, 1, 1, 5, 1]]];
r1 = BoundaryDiscretizeGraphics@tmp

Blockquote

RegionQ[r1]

True

RegionMember[r1, {2, 0, 0}]

False

Case 2

BoundaryDiscretizeGraphics[
 GraphicsComplex[{{4, 4, 4}, {4, 4, 6}, {4, 6, 4}, {4, 6, 6}, {6, 4, 
    4}, {6, 4, 6}, {6, 6, 4}, {6, 6, 6}}, 
  Polygon[{(*{2,3,1},{6,8,
    7},*){2, 5, 6}, {1, 7, 5}, {4, 7, 8}, {2, 6, 4}, {2, 3, 4}, {6, 5,
      7}, {1, 2, 5}, {1, 3, 7}, {3, 4, 7}, {8, 4, 6}}]]]

Blockquote

$\endgroup$
1
  • $\begingroup$ I also think it a bug. An easy way to achieve the same result is with r = BoundaryDiscretizeRegion[Cuboid[{4, 4, 4}, {6, 6, 6}]] $\endgroup$
    – s.s.o
    Aug 19, 2014 at 8:45

1 Answer 1

8
$\begingroup$

This is a bug, I think, and I filed it as such: The second region should not evaluate to a RegionQ BoundaryMeshRegion. A BoundaryMeshRegion is valid if it contains a closed surface. The subtle point about BoundaryMeshRegion is that this closed surface is a (sparse) representation of the entire region the surface encloses. Why the first one does not work, I must admit, I do not know. At least it's not obvious to me.

You can use:

bmr = BoundaryMeshRegion[{{4, 4, 4}, {4, 4, 6}, {4, 6, 6}, {4, 6, 
     4}, {6, 4, 4}, {6, 4, 6}, {6, 6, 6}, {6, 6, 4}},
   Polygon[{{1, 2, 3, 4}, {1, 2, 6, 5}, {2, 3, 7, 6}, {3, 4, 8, 
      7}, {4, 1, 5, 8}, {5, 6, 7, 8}}]];
rmf = RegionMember[bmr]

To generate the RegionMemberFunction. I just perturbed the coordinates a bit. You could try to replace the quadrilaterals with triangles and see if that works.

$\endgroup$
3
  • $\begingroup$ Can you check the additional question "Are these bugs too?" $\endgroup$
    – Junho Lee
    Aug 19, 2014 at 15:57
  • $\begingroup$ @JunhoLee, I think so. $\endgroup$
    – user21
    Aug 19, 2014 at 16:56
  • $\begingroup$ thanks a lot. Region -s are still in the while. $\endgroup$
    – Junho Lee
    Aug 19, 2014 at 23:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.