Ok! Where do the segment and it’s cutter intersect? Solving the equation is way too complicated and you wind up with a pair each of bletcherous quadratics for x and y. How to work out which two of the four combintions are the right ones? Gotta be an easier way.

And there is.

Build a mobius transformation H that moves the centre of segment to zero and the center of cutter ∞. The third point is arbitrary (perhaps make the mid point of the two center points fixed). [edit] Actually, it would be nice to have a method that builds a transformaion that moves two points to 0 and ∞ (and on that moves then to 0 and 1) with a k conjugate to the identity. can it be done? … I think so. There the right number of degrees of freedom for there to be a unique solution … but on second though, no. For two arbitrary points on a sphere, you cant move ’em to 0 and ∞ without getting bendy (in most cases). Only exception is when they are already opposite.

Since we know that the circle and its cutter are at right angles, the result will always be segment' = a circle centered on 0 and cutter' = a straight line passing through 0. From the radius of segment' and the slope of cutter', it’s easy to calculate points a' and p'. Transform them back by H^{-1}, and we are done! As a bonus, this solution is general, having only the 2 cases where segment is a positive or a negative circle, and this affects only the sense of the arc, which we already know we have to handle.

I will have to update my code so that the transform correctly handles transforming the point at infinity, and generating the 0,1,∞ transform where one of the starting points is the point at infinity.

[update] Actually, If I move the centers of the circles to 0 and 1, then the points a and b must lie on the semicircles connecting the two and I can derive them from the radii. That means I can calculate them without having to fart around with line slopes.

This entry was posted on Saturday, February 18th, 2012 at 6:07 am and is filed under Java, Math. You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.