5
$\begingroup$

We were required, for a project, to plot surfaces of constant u, v, and z (and a sample of arbitrary 'a') of the bipolar cylindrical coordinates. (http://mathworld.wolfram.com/BipolarCoordinates.html)

We are given x, y and z in terms of u and v: enter image description here

I thought this might be straightforward, so I attempted a parametric plot in Mathematica:

ParametricPlot[{Sinh[v]/(Cosh[v] - Cos[u]), 
  Sin[u]/(Cosh[v] - Cos[u])}, {u, 0, 2 Pi}, {v, -1, 1}]

However, this didn't yield anything fruitful, and I was left wondering how I should attempt to plot this. Any suggestions would help!

$\endgroup$
1
  • 2
    $\begingroup$ Minimum change for desired result: add the option Mesh -> 20 to the ParametricPlot. $\endgroup$
    – user484
    Commented Sep 25, 2016 at 3:44

2 Answers 2

9
$\begingroup$

What you tried is the syntax for a parametric surface. However, you want to plot the coordinate lines. This can be done by stepping through one of the coordinate ranges in discrete steps and plotting a continuous parametric line by varying the other coordinate:

Show[ParametricPlot[
  Evaluate[Table[
    Tooltip[{Sinh[v]/(Cosh[v] - Cos[u]), Sin[u]/(Cosh[v] - Cos[u])}, 
     Row[{"u \[LongEqual] ", u}]], {u, 0, 2 Pi, Pi/10}]], {v, -1, 1}],
  ParametricPlot[
  Evaluate[Table[
    Tooltip[{Sinh[v]/(Cosh[v] - Cos[u]), Sin[u]/(Cosh[v] - Cos[u])}, 
     Row[{"v \[LongEqual] ", v}]], {v, -1, 1, 1/10}]], {u, Pi/100, 
   2 Pi}]]

coords

Here I did one ParametricPlot for each family of coordinate lines. In each ParametricPlot, the family of lines is generated by specifying the argument as a Table. One of the variables is the index of the table, so it's discrete, and the other variable is being used as the plot parameter.

I add Evaluate in front of the Table so that the list entries with different discrete indices are generated before being passed to ParametricPlot. This is something you have to do whenever using a Plot related command that has attribute HoldAll. If you omit the Evaluate, all lines generated in the Table will be plotted with the same color.

You may also be interested in the built-in functionality that can be accessed through things like this:

CoordinateTransformData[
 "BipolarCylindrical" -> "Cartesian", "Mapping", {u, v, z}]

Edit

To help explain the coordinate system, it's useful to label each colored line by the fixed parameter it corresponds to. I did this using Tooltip. So if you now hover over any of the lines, the tooltip will appear and tell you which coordinate was held constant to make that curve, and what value it was held at.

$\endgroup$
3
  • $\begingroup$ That was really helpful. If I understand correctly, does each ring of a certain color represent a specific set of 'u' and 'v' values? I take it that this is what was meant when they asked us to 'describe surfaces of constant u, v and z for various values of the constant a'. $\endgroup$ Commented Sep 25, 2016 at 4:08
  • $\begingroup$ Each ring is drawn with either u or v held fixed while the respective other coordinate is varied. I tried to clarify this by adding tooltips to the plot in the edit. $\endgroup$
    – Jens
    Commented Sep 25, 2016 at 4:18
  • $\begingroup$ That makes a lot of sense (I also now see how it ties in to how the basis vectors in this coordinate system work.) $\endgroup$ Commented Sep 25, 2016 at 4:27
1
$\begingroup$

As pointed out in one of the comments, the ParametricPlot command in your question requires a minimal change to produce your desired result. You only need to add the Mesh->10 command (or any other number).

In fact, the following Mathematica command

ParametricPlot[{Sinh[v]/(Cosh[v] - Cos[u]), Sin[u]/(Cosh[v] - Cos[u])}, 
    {u, 0, 2 Pi}, {v, -1, 1}, Mesh->10]

produces the following plot

enter image description here

$\endgroup$

Your Answer

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

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