Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

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

share|improve this question
    
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}]] –  s.s.o Aug 19 at 8:45

1 Answer 1

up vote 7 down vote accepted

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.

share|improve this answer
    
Can you check the additional question "Are these bugs too?" –  Junho Lee Aug 19 at 15:57
    
@JunhoLee, I think so. –  user21 Aug 19 at 16:56
    
thanks a lot. Region -s are still in the while. –  Junho Lee Aug 19 at 23:45

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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