I’m sorry for the late reply. Lets go to the subject:
Regarding to tangents orientation:
Say you have a spline made with two points P1 and P2 and two tangents T1 and T2. If you draw the spline and its tangents on screen by your own (by hand), you’ll notice that T2 is drawn like that:
See how the Spline tool draws each tangent extending the tangent towards the direction of drawing.
But for convenience we draw on screen -T2 because usually tangents on a point are coincident on consecutive splines so if we draw T2 as it is, it would overlap with T1 from the next spline and so we would have problems handling it.
Regarding to angles:
Angles are tricky. And specially in Synfig Studio When you manipulate a handle in Synfig the sequence is this: The original value of the handle is cached and only when the user release the mouse (drop the handle again on screen) the new value is stored on the handle. For linear or radial values there is not problem with that, you just replace the old value with the new value and that’s all. But with that simple behavior applied on angles (any angle handle) we would loose the ability of pass 180º value (or just in case 360º). In some handles and parameters from some layers, this is important, because the angle value could be used anywhere and its value beyond 360 can be important (due to Convert types and connection with math formulas). So we decided to include on the code detect the movement of the angles between the four quadrants. If you pass from one quadrant to its consecutive, the trim of the 180 degrees produced by maths (when you calculate the arctang of its x,y position) is not applied and the value is increased consequently.
Say we are on 178 degrees angle and move to 185. With the old algorithm it would result to be -175 and with the new algorithm it is 185.
Said that, angles are coherent with the history of the movements of the tangents by you, the user and different for each situation.
Regarding to the tangent size:
Tangents are drawn by 1/3 of its real length. Is it like that because the real length is excessive long to be manageable. So you have to take account that reduction in order to manually give the values to the spline parameters to draw a particular spline calculated by maths.
(Note to coders: this 1/3 value can be added to the meta data)
I hope it doesn’t hurt too much the brain of the reader.