Ease in/out-linear interpolation implemented incorrectly

Either I’m locked out of editing an old post or I can’t find that feature, so here I am with a new post and a minor update.

First, if you haven’t already done so, be sure to check out my latest thread covering how to fix all of this stuff internally to Synfig. This new thread reformulates the boundary conditions as a matrix and should quickly allow for the addition of handles to adjust tangents.

Primarily, I’d like to bring attention to a shortcoming of my above workaround in which I show how to manually set T and B to achieve the desired tangents. Note that both tension and bias are expressed as fractions. If the denominators of either of those fractions is zero, then this method breaks down. This can most easily happen if Δp1 or Δp2 is zero, which I happen to be grappling with right now in an animation I’m working on. I think this further underscores the importance of overhauling the waypoint system. My current workaround is to just set the values and tangents to small values, although this still outputs a large value for tension.

While I’m posting something new, I’d like to offer an alternative workaround (although it doesn’t help with the problem mentioned in the previous paragraph). In my previous post, I set continuity to -1 for simplicity, but it’s just as mathematically easy to set continuity to 1. If C=1, we make the following adjustments to the equations:
α’ = m_in Δt2 Δp1 (Δt1 + 2Δt2)
β’ = m_out Δt1 Δp2 (2Δt1 + Δt2)
γ = 6 Δt1 Δt2 Δp1 Δp2

where α’ and β’ are the slightly revised coefficients (Δp1 and Δp2 have been swapped). Note that γ remains unchanged. The new equations for tension and bias are:
T = 1 - (α’+β’)/γ
B = (β’-α’)/(β’+α’)

where only the bias formula has been changed, substituting α’ for β and β’ for α.

This gives two methods of setting the tension and bias based on a judicious choice of continuity, C. Since C is technically a free parameter, could we set it to some intermediate value and fine tune it, preferably so T and B are close to their nearest thousandths place? Hypothetically, yes, but I dipped my toes in the mathematics and it appears to be intractable. I don’t think there’s any easy way to solve for T and B given arbitrary C and I have no interest in attempting to solve the problem at this time since the benefit of doing so is only marginal.