0
$\begingroup$

For a mapping $\gamma(x,y)$ from $\mathbb{R}^2$ to $\mathbb{R}^2$ we can plot the image of some two dimensional region with ParametricPLot as, for instance,

\[Gamma][x_, y_] := {x^2, x*y^3}
 ParametricPlot[\[Gamma][x, y], Element[{x, y}, Disk[]], PlotRange -> All]

being the domain, say, a disk. But if I want to plot just the image of the boundary as

ParametricPlot[\[Gamma][x, y], Element[{x, y}, Circle[]], PlotRange -> All]

then ParametricPlot has troubles understanding the dimensionality and the number of variables. Then, how can one make a parametric plot, being the domain some curve, as in the previous example ?

Note: I do not want to parametrize the circle as $(\cos\theta,\sin\theta)$ and then replace back to get $\gamma(\theta)$, because this may not be possible for more complicated curves without closed, analytical formula.

$\endgroup$
5
  • $\begingroup$ ParametricPlot[\[Gamma][x, y], Element[{x, y}, Disk[]], PlotRange -> All, BoundaryStyle -> Red, PlotStyle -> None] $\endgroup$
    – cvgmt
    Sep 20, 2022 at 14:17
  • $\begingroup$ @cvgmt True. But my question comes from the fact that the function is some numerical, slowly running bunch of things and running for the whole interior, which I don't need, is unnecessary, so just want to compute the values of the boundary. $\endgroup$ Sep 20, 2022 at 14:19
  • $\begingroup$ reg = ParametricRegion[{\[Gamma][x, y], {x, y} \[Element] Circle[]}, {x, y}]; Region[Style[reg, Red]] $\endgroup$
    – cvgmt
    Sep 20, 2022 at 14:42
  • 1
    $\begingroup$ @cvgmt - what version are you using? With v13.1 on a Mac, I don't get a plot $\endgroup$
    – Bob Hanlon
    Sep 20, 2022 at 15:17
  • $\begingroup$ @BobHanlon I am using v13.1 on Win 11 and v13.1 on Manjaro Linux. $\endgroup$
    – cvgmt
    Sep 20, 2022 at 22:39

2 Answers 2

3
$\begingroup$
  • draw a circle and mapping it by γ[x_, y_] = {x^2, x*y^3}
Clear[circle,γ];
circle= RegionPlot[DiscretizeRegion[Circle[], AccuracyGoal -> 3]];
γ[x_, y_] = {x^2, x*y^3};
circle /. {x_Real, y_Real} -> γ[x, y]

enter image description here

  • Use ParametricRegion as in comment.
reg = ParametricRegion[{γ[x, y], {x, y} ∈ 
     Circle[]}, {x, y}];
RegionPlot[DiscretizeRegion[reg, MaxCellMeasure -> .0001], 
 AspectRatio -> Automatic]

enter image description here

$\endgroup$
1
$\begingroup$

You may first generate a parametrized region. From the result you then calculate the boundary using "RegionBoundary". Here is your example:

reg = ParametricRegion[{\[Gamma][x, y], {x, y} \[Element] Disk[]}, {x,
    y}]
Region[Style[reg, Red]] (*show the region*)
Region[RegionBoundary[reg]] (* show the border *)

enter image description here

If you want to increase the performance, you may only calculate a small strip. The drawback is, that the border is then 2 sided:

reg = ParametricRegion[{\[Gamma][x, y], {x, y} \[Element] 
     RegionDifference[Disk[{0, 0}, 1], Disk[{0, 0}, 0.998]] }, {x, y}];
Region[Style[reg, Red]] (*show the region*)
Region[RegionBoundary[reg]] (* show the border *)

enter image description here

$\endgroup$
3
  • $\begingroup$ Thanks. But my question comes from the fact that the function is some numerical, slowly running bunch of things and running for the whole interior, which I don't need, is unnecessary, so I just want to compute the values of the boundary $\endgroup$ Sep 20, 2022 at 18:34
  • $\begingroup$ Look at my answer again. I added way to decrease the amount of calculation to my answer. $\endgroup$ Sep 20, 2022 at 19:01
  • $\begingroup$ Nice. That's an ingenious solution. $\endgroup$ Sep 20, 2022 at 19:20

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.