I would like to draw the following picture in tikz

enter image description here

All arcs are part of circles. I would like to specify the following information only : the coordinates of the points a and b, varying radii for the different circle portions, and fractions or percentages t to place purple and pink points along the circles at a specified fraction of the way between two previously defined points.

So for instance I would like to say that the big purple points on the right arc are 60% and 80% along the way from a to b, while the big purple points on the left arc are 40% and 70% along the way from a to b, while the pink points are midway on some circular arc joining pairs of previously defined big purple points.

If I could place some pink circles "harmoniously" in the center of the curved triangles ...

My main problem is the following : suppose I have two points a and b (given by cartesian coordinates) and a radius \rad : this specifies two circles passing through these points of given radius. How do I place a point on one of these circles that is t % along the way from a to b ?

An equivalent problem is the following : suppose I have a center point centerab and two points a and b, whose coordinates are expressed in cartesian coordinates : how do I find their polar coordinates relative to the point centerab ?

Do I have to use linear algebra (such matrix rotation, but also finding angles using arcsin), or can tikz provide me with a simple solution ?

The code below only finds the centers of such circles, but I don't know how to find the polar coordinates of a and b relative to this center, or how to place a point t percent along the way from a to b.

\usetikzlibrary{calc, intersections}


\coordinate (b) at (5,8);
\coordinate (a) at (0,0);
\draw [fill=green] (a) circle (2pt);
\draw [fill=green] (b) circle (2pt);
\path [name path = acirc] (a) circle (\rad);
\path [name path = bcirc] (b) circle (\rad);
\path [name intersections={of=acirc and bcirc}];
\coordinate (centerab) at (intersection-1);
\draw (centerab) circle (2pt);
\draw (centerab) circle (\rad);

  • 1
    Maybe helpful package \usepackage{tkz-euclide}.
    – Bobyandbob
    Commented May 2, 2017 at 18:50
  • The center of the circle is located on the perpendicular bisector to $\overbar{ab}$, or simply use the intersections tikzlibrary for the intersections of circles (paths only) of radius \rad centered at a and b. Use the [pos=.5] (for example) option for coordinates along a path. @Bobyandbob - Have they translated the tks-euclide manual into anything besides french yet? Commented May 2, 2017 at 20:14
  • @JohnKormylo . No, i only know the french version.
    – Bobyandbob
    Commented May 2, 2017 at 20:17

1 Answer 1


I think this is called bipolar coordinates.

Here is a naïve implementation



    F1/.store in=\tikz@cs@Fone,
    F2/.store in=\tikz@cs@Ftwo,
    sigma/.store in=\tikz@cs@sigma,
    s/.store in=\tikz@cs@sigma,
    tau/.store in=\tikz@cs@tau,
    t/.store in=\tikz@cs@tau,


    \draw[purple]foreach\tau in{-2,-1.8,...,2}{
        (bipolar cs:F1=a,F2=b,sigma=90,tau=\tau)circle(.1)
    \draw[cyan]foreach\sigma in{10,20,...,350}{
        (bipolar cs:F1=a,F2=b,sigma=\sigma,tau=1)circle(.1)


Here is another example

    \fill[purple]foreach\sigma in{30,40,...,330}{
        foreach\tau in{-2,-1.8,...,2}{
            (bipolar cs:F1=a,F2=b,sigma=\sigma,tau=\tau)circle(.1)
    \draw[->](bipolar cs:F1=a,F2=b,sigma=340,tau=2)->+(1,2)node[above]{$\sigma$};
    \draw[->](bipolar cs:F1=a,F2=b,sigma=340,tau=2)->+(2,-1)node[right]{$\tau$};

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .