The CSE arc is defined by three points: the center, the start point and the end point. After setting the start point, moving the cursor counterclockwise draws the arc; moving the mouse clockwise defines the area that is ‘subtracted’ from the full circle to create the arc.
Each arc is defined by the centre, and the start and end angle. Additionaly, the internal angle is calculated and can be changed – changing the internal angle updates the end angle with the corresponding difference. All angles are expressed in degrees.
The angle values can be positive or negative: imagine a line parallel to oX going through the center of the arc. The top half defined in this way has positive angle values, starting from 0 on the right hand and going towards 180 in a counter clockwise direction. The bottom half has negative angles, with -180 on the left hand side and going towards 0 in the same counter clockwise direction.
The internal angle is the absolute value of the angle defined by the arc.
Based on the possible positions of the start and end points relative to the imaginary center-axis, there are 6 main cases:
Each of these cases is handled in code when calculating the start, end and internal angles and are covered in the unit tests for the angle methods.
The best Android Market