Opened 3 years ago
Last modified 3 years ago
#23427 needs_work defect
intersection of hyperbolic geodesics is wrong
Reported by:  vdelecroix  Owned by:  

Priority:  major  Milestone:  sage8.1 
Component:  geometry  Keywords:  bug 
Cc:  jhonrubia6  Merged in:  
Authors:  Javier Honrubia González  Reviewers:  
Report Upstream:  N/A  Work issues:  
Branch:  u/jhonrubia6/intersection_of_hyperbolic_geodesics_is_wrong (Commits)  Commit:  3f2878194efe7adb432c655c2afcda70c7e33e13 
Dependencies:  Stopgaps: 
Description
The following geodesics do not intersect but Sage thinks they do
sage: UHP = HyperbolicPlane().UHP() sage: g1 = UHP.get_geodesic(2*QQbar.gen(), 5) sage: g2 = UHP.get_geodesic(1/2, Infinity) sage: g1.intersection(g2) [Point in UHP 0.500000000000000? + 1.284523257866513?*I]
Change History (7)
comment:1 Changed 3 years ago by
comment:2 Changed 3 years ago by
 Branch set to u/jhonrubia6/intersection_of_hyperbolic_geodesics_is_wrong
comment:3 Changed 3 years ago by
 Commit set to 3f2878194efe7adb432c655c2afcda70c7e33e13
 Status changed from new to needs_review
New commits:
3f28781  Bug corrected. Some examples on perpendicular_bisector() modified as to pass tests

comment:4 followup: ↓ 5 Changed 3 years ago by
What about vertical geodesics?
comment:5 in reply to: ↑ 4 Changed 3 years ago by
 Status changed from needs_review to needs_work
Replying to vdelecroix:
What about vertical geodesics?
More precisely
sage: UHP = HyperbolicPlane().UHP() sage: g1 = UHP.get_geodesic(I, 2*I) sage: g2 = UHP.get_geodesic(I/2, 4*I) sage: g3 = UHP.get_geodesic(3*I, 4*I) sage: g1.intersection(g2) [Boundary point in UHP +Infinity, Boundary point in UHP 0] sage: g1.intersection(g3) [Boundary point in UHP +Infinity, Boundary point in UHP 0]
comment:6 followup: ↓ 7 Changed 3 years ago by
we also need to correct
sage: UHP = HyperbolicPlane().UHP() sage: g1=UHP.get_geodesic(1,+1) sage: g2=UHP.get_geodesic(1,1+2*I) sage: g1.intersection(g2) []
should return
[Boundary point in UHP 1]
and
UHP = HyperbolicPlane().UHP() g1=UHP.get_geodesic(1,I) g2=UHP.get_geodesic(+1,(+cos(pi/3)+I*sin(pi/3))) [Boundary point in UHP 1, Boundary point in UHP 1]
should return []
What should be the correct answer of the function in the following case?
UHP = HyperbolicPlane().UHP() g1=UHP.get_geodesic(I,3*I) g2=UHP.get_geodesic(2*I,4*I)
Maybe
[2*I,3*I]
or
Geodesic in UHP from 2*I to 3*I
comment:7 in reply to: ↑ 6 Changed 3 years ago by
Replying to jhonrubia6:
<SNIP>
What should be the correct answer of the function in the following case?
UHP = HyperbolicPlane().UHP() g1=UHP.get_geodesic(I,3*I) g2=UHP.get_geodesic(2*I,4*I)Maybe
[2*I,3*I]
definitely not
or
Geodesic in UHP from 2*I to 3*I
Much better
Note: See
TracTickets for help on using
tickets.
It seems easy. Checking that the real part of the fixed point of both involutions lies between the real part of endpoints of both geodesics,would be a fast implementation. Are you going to tackle this? I have time these days to code it.