# Parametric plotting coordinate transformation

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: 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!

• Minimum change for desired result: add the option Mesh -> 20 to the ParametricPlot. – Rahul Sep 25 '16 at 3:44

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}]] 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.

• 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'. – Ferreroire Sep 25 '16 at 4:08
• 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. – Jens Sep 25 '16 at 4:18
• That makes a lot of sense (I also now see how it ties in to how the basis vectors in this coordinate system work.) – Ferreroire Sep 25 '16 at 4:27