Translating points on the Poincaré disk

This is a follow-up to this 2017 question, in which we assume that we have a set of points $$x_i$$ on the Poincaré disk and a translation $$F$$ of point $$x_0$$ to $$F(x_0) = x_{0}'$$. We want to compute $$F(x_i)$$ for each point $$x_i$$ such that it preserves the distance and orientation of each point to another in hyperbolic space.

I understand from this answer that this alone is not enough to determine the function $$F$$, so we can assume that the line from $$x_0$$ to $$x_0'$$ is the axis of rotation for each point. What I don't understand is how to compute this concretely. Therefore I would like to ask how to compute the function F for example values (with no special meaning):

$$x_0: (0.4, -0.2)$$ and $$F(x_0) = (0.35,-0.25)$$

$$x_1: (-0.2, 0.5)$$

$$x_2: (-0.6, -0.8$$)

In this case, what would $$F(x_1)$$ and $$F(x_2)$$ be?

Context: I have been trying to create a write a JavaScript program that does this automatically for any point on the unit disk, but my results are wrong, so there must be something wrong with my computation.

• "Axis of rotation for each point" is significantly unclear to me... Can you paraphrase or otherwise clarify? Jul 5, 2022 at 20:12
• this is all easier in the upper half plane. The Mobius transformations there are $\frac{az+b}{cz+d}$ where $a,b,c,d$ are real and determinant $ad-bc > 0.$ To go back and forth with the disc, one direction is $\frac{iz+1}{z+i},$ the inverse direction is $\frac{z+i}{iz+1}$ which is also the ordinary reciprocal. Anyway, recommend upper half plane. Jul 5, 2022 at 20:17
• Your 1st sentence is unclear and so is the 2nd. Jul 5, 2022 at 20:33
• @WillJagy Unfortunately, using the upper half plane model is not an option.
– Sid
Jul 5, 2022 at 20:35
• Ok, in a little while I'll write some formulas and tell exactly what they do... :) Jul 5, 2022 at 21:29

1 Answer

As description, I will use complex numbers and their algebra, and also express Mobius transformations by two-by-two complex matrices, acting by $$\pmatrix{a&b\cr c&d}(z)={az+b\over cz+d}$$, as usual. All the Mobius transformations stabilizing the open unit disk preserve hyperbolic angles in hyperbolic triangles, and preserve hyperbolic distances between pairs of points. Composition of Mobius transformations is exactly given by multiplication of the corresponding matrices.

First, for $$\beta$$ in the open unit disk, $$g_\beta=\pmatrix{1 & \beta\cr \overline{\beta}&1}$$ maps $$0$$ to $$\beta$$. Further, this map is the unique such that preserves the geodesic connecting $$0$$ and $$\beta$$, namely, the diameter passing through $$\beta$$. Proving this is not soooo hard, but involves some ideas that are fancier than the mere computation itself.

Any conjugate $$hg_\beta h^{-1}$$ (matrix multiplication) for $$h$$ a Mobius transformation stabilizing the disk will have the same property with regard to the points $$h(0)$$ and $$h(\beta)$$.

Given $$z,w$$ in the unit disk, let $$h=g_z$$, and $$\beta=h^{-1}(w)$$. Then the matrix product $$hg_\beta h^{-1}$$ maps $$z$$ to $$w$$, and has the stabilizing-the-connecting-geodesic property.

In terms of programming, apart from finding packages to do such stuff, I'd definitely want to "package" the components, rather than have one big ghastly formula.

(In fact, this particular computation is easier on the disk rather than the upper half-plane, because the geodesic-generating elements are easier to write down...)

• Thank you very much. If it is not too much trouble, would it be possible for you to demonstrate how to use this to calculate $F(x_1)$ or $F(x_2)$ in the example I posted?
– Sid
Jul 5, 2022 at 23:58
• Perhaps tomorrow... but/and I'd package your points as complex numbers rather than as pairs of reals, to begin with, and (if you don't already have such a package...) I'd write some subroutines that did arithmetic on complex numbers, that took as arguments names for complex numbers... rather than pairs of real numbers, thought that could be a "constructor" for a complex number. That kind of thing. Jul 6, 2022 at 0:06
• No problem. I understand this answer now after the edit, so I can try to do it myself. Thanks again.
– Sid
Jul 6, 2022 at 0:07
• Ah, yeah, sorry about the typo! :) Jul 6, 2022 at 0:07
• I implemented your formulas in JavaScript and the visual results are exactly what I was hoping for. Thanks again! Just for the sake of completeness: I get that $F(x_1) = (-0.391, 0.337)$ and $F(x_2) = (-0.476, -0.879)$.
– Sid
Jul 6, 2022 at 14:40