Dev:Spline Bline

From Synfig Studio :: Documentation
Revision as of 02:16, 17 December 2015 by D.j.a.y (Talk | contribs) (Genete stuff "NEw tangent handling")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Bline Speed

Tangent

Spline point tangent handling

   Document wrote by genete to prepare change to tangent split function. Implemented now. But still some info to dig into.

Target:

Handle the tangents in Synfig Studio like they are handled in Inkscape. It will affect to SplinePoints and the corresponding actions.

Changes to produce:

1) Current split tangent flag allows to independize completely one tangent from the other. It will be replaced by the union of two flags: tangent angle flag and tangent radius flag 2) By default newly created Splines do have tangent radius flag enabled (radius is not linked) 3) By the change of 1), the current component of the SplinePoint, “split” will be deprecated. In fact it will be alive in the SplinePoint to keep backward compatibility but it will be hidden to user edition. 4) The new behavior of the tangents will be this:

Let’s call:

  • split angle flag = saf
  • split radius flag= srf
  • tangent 1 angle = a1
  • tangent 2 angle = a2
  • tangent 1 radius = r1
  • tangent 1 radius = r2
sra srf angles radius
false false a1=a2 r1=r2
true false a1!=a2 r1=r2
false true a1=a2 r1!=r2
true true a1!=a2 r1!=r2

5) There will be new Actions to split/merge angle, split radius and split both (this last one will be the original one reworked)

6) New ways to split angle and radius with the mouse gestures will be created. I will keep the click and drag with shift pressed to split angle and will add click and drag with ALT or CTRL pressed to split radius. Maybe there could be new mouse gestures to merge radius, angle or both but I’m not sure about this yet.

7) Old files will load the split tangent normally and it will be stored in the hidden “split” sub-parameter. The Value Node that “split” holds from the old file, will be stored as well in the “split_angle” and “split_radius” since the logic is that split=split_angle && split_radius

BONUS:

In the future when a new SplinePoint is inserted, the calculated tangents can be adapted to keep the shape of the original Bezier better than it does now, thanks to there is the option of split the radius in the insertion point.