# How to create a coercion on hyperbolic models?

I want to put some text on my plots of the poincare disc model. I tried to do something like that,

word = text('my word',(real_part(P),imag_part(P)), color='black')


and gives me the following error,

TypeError: cannot coerce arguments: no canonical coercion from
Hyperbolic plane in the Poincare Disk Model to Symbolic Ring


Furthermore, this only works if my complex number P comes from the ring of complex numbers, not for a hyperbolic point. I need to configure some coercion. As substracting imaginary and real parts of a number in the poincare disk model. get_point method only work in one direction.

I am generating list of points like this.

Point in PD 0.150615998712507 - 0.101793686778004*I


and I want to add text in that coordinates, but I cannot find a way to coerce and get for example the complex number 0.1506 - 0.1017*I (even such exaggerate approximation will work in a plot)

Surely I am missing a method. Can you help me with this?

edit retag close merge delete

Sort by ยป oldest newest most voted

First, you really need to provide the explicit construction of th objects, so that we can try to reproduce.

Without more information, let me assume that the P you speak about is of this form:

sage: H = HyperbolicPlane().PD()
sage: P = H.random_element()
sage: P
Point in PD 0.457058290632951 - 0.778395192442617*I


Indeed:

sage: real_part(P)
TypeError: cannot coerce arguments: no canonical coercion from Hyperbolic plane in the Poincare Disk Model to Symbolic Ring


To find a method related to some object, a very nice way is to use tab-completion, that is you type:

sage: P.<TAB>


Where <TAB> stands for the tab-key (which looks like two arrows on your keyboard).

There, you will find:

sage: P.coordinates()
0.457058290632951 - 0.778395192442617*I
sage: parent(P.coordinates())
Symbolic Ring


Which looks good, given the previous error message, and indeed, the following works:

sage: C = P.coordinates()
sage: word = text('my word',(real_part(C),imag_part(C)), color='black')
sage: word
Launched png viewer for Graphics object consisting of 1 graphics primitive

more

What an amazing trick! I had no idea of the existence of the <tab> function!

( 2019-01-30 02:29:15 +0200 )edit

This is the first thing i teach during Sage trainings !

( 2019-01-30 10:52:34 +0200 )edit