# Converting a translated filled curve into a region

How do I convert a translated filled curve into a region?

It works without translation:

a = FilledCurve[{{{1, 3, 2}}}, {{{0, 0}, {1/2, 1}, {1, 0}}}] // Graphics
a // DiscretizeGraphics // Region


It does not work with translation for no reason (since b is output of Graphics the same way as is a):

b =
Translate[
FilledCurve[{{{1, 3, 2}}}, {{{0, 0}, {1/2, 1}, {1, 0}}}], {0, 1}] // Graphics
b // DiscretizeGraphics // Region

• My guess is that transformations such as Translate, Rotate, etc., are computed in the GPU when the graphics are display, and there is no way (AFAIK) to convert them to Normal graphics. To me, it seems a gap in Mathematica's functionality. Oct 13, 2020 at 14:39

You can translate the control point coordinates and proceed as before.

b =
With[{pts = TranslationTransform[{0, 1}][{{0, 0}, {1/2, 1}, {1, 0}}]},
FilledCurve[{{{1, 3, 2}}}, {pts}]] // Graphics;
b // DiscretizeGraphics // Region[#, Frame -> True] &


• @azerbajdzan. Thanks for accepting my answer. But I don't understand why you considered it worth an acceptance but not worth an up-vote. You are aware, aren't you, that you can do both. Oct 15, 2020 at 0:29

You could discretize first and then translate:

a = FilledCurve[{{{1, 3, 2}}}, {{{0, 0}, {1/2, 1}, {1, 0}}}] //
Graphics;

TransformedRegion[a // DiscretizeGraphics,
TranslationTransform[{0, 1}]]

• I know this works, but I have have arguments that are translated first. Oct 13, 2020 at 14:44