Problem
I'm trying to make a MeshRegion from a bezier surface defined from an array of control points. Consider
bez = BezierFunction[{{{0,0,0},{0,1,0}},{{1,0,0},{1,1,1}}}] ParametricRegion[bez[u,v],{{u,0,1},{v,0,1}}] This doesn't work because ParametricRegion requires a triple of functions rather than a function that produces triples. So
ParametricRegion[{bez[u,v][[1]],bez[u,v][[2]],bez[u,v][[3]]},{{u,0,1},{v,0,1}}] is the natural next step. This doesn't work because bez[u,v][[1]] evaluates to u etc.
Perhaps some combo of Hold, Inactive or Unevaluated will help, but I can't get them to work.
The answer to "Don't understand an evaluation with BezierFunction" indicates that
f[u_,v_]:=bez[u,v] ParametricRegion[{f[u,v][[1]],f[u,v][[2]],f[u,v][[3]]},{{u,0,1},{v,0,1}}] might work, but this fails too. I even tried doing a separate f1[u_,v_]:=bez[u,v][[1]] and so on for 2 and 3, but this failed as well.
My Mathematica $Version is 12.1.1.
Question
How can I feed a BezierFunction into ParametricRegion, minding these problems of defining a triple of functions and evaluation order?
Accepted Answer
@lericr points out that DiscretizeGraphics applied to ParametricPlot produces a good mesh region.
I don't know why why ParametricPlot produces a mesh while ParametricRegion and DiscretizeRegion do not. Further investigations might use TracePrint to figure out details .


