Open
Description
Something goes wrong when Transform.merge() is applied to transformations that are not all orientation-preserving. Below is a (not quite) minimal example illustrating the problem. The second and third output point should be equal and should be the first one with the second coordinated negated. However, the second one is not.
import math
import hyperbolic.poincare as pc
half_to_disk = pc.Transform.half_to_disk()
infty = pc.Ideal.from_degree(90)
p = half_to_disk.apply_to_tuple((.5,math.sqrt(3)/2))
q = half_to_disk.apply_to_tuple((0,1))
rot_q = pc.Transform.rotation(deg=-90)
rot_p = pc.Transform.merge(pc.Transform.shift_origin(p),pc.Transform.rotation(deg=-60),pc.Transform.shift_origin(p).inverted())
refl = pc.Transform.mirror()
par = pc.Transform.merge(rot_p,rot_p,rot_q,rot_q)
t = pc.Transform.merge(par,par,refl)
print(t.apply_to_point(infty),pc.Transform.merge(refl,t).apply_to_point(infty),refl.apply_to_point(t.apply_to_point(infty)))
Metadata
Metadata
Assignees
Labels
No labels