As promised, I’d like to cover how users can account for the broken TCB to produce their own tangents of any amount they choose. The algebra gets a little hairy, but I’ll try to keep it manageable.
Let t0, t1, and t2 be the times of three consecutive waypoints. The middle waypoint should be TCB so we can manipulate it as we wish. Let p0, p1, and p2 be their respective values. Set the continuity parameter to -1 for simplicity. Finally, let m_in and m_out be the desired tangents for the middle TCB waypoint. These tangents are set by the user and are known quantities. I can’t help you choose them-- they’re yours to pick! Just be aware that they are with respect to normalized time, so time is again a dimensionless value that ranges from 0 to 1. If any of this is confusing, I have some examples at the end.
Now define Δt1 = t1-t0 and Δt2 = t2-t1. Likewise, define Δp1 = p1-p0 and Δp2=p2-p1. These are just the time/value intervals.
Now’s where it gets a little weird. I went through the difficult algebra so you don’t have to. We’re going to define three new quantities:
α = m_in Δt2 Δp2 (Δt1 + 2Δt2)
β = m_out Δt1 Δp1 (2Δt1 + Δt2)
γ = 6 Δt1 Δt2 Δp1 Δp2
Defining these quantities like so cuts down on the number of symbols we need to write from this point forward. We’re almost done! Our tension is:
T = 1 - (α+β)/γ
And our bias is:
B = (α-β)/(α+β)
I put together a spreadsheet that runs through these calculations and spits out T and B parameters from desired tangents. It appears to be working properly. For example, I’ve set three TCB waypoints at (0, 0), (80, 40), and (120, 120). Suppose we want these connected by straight lines. (I know we could use a linear waypoint, but humor me for the sake of testing the calculations.) That means we want the incoming tangent to be m_in = 40 and the outgoing tangent to be m_out = 80. My spreadsheet spits out values of T=-0.167 and B=-0.429.
Does it work? Judge for yourself!
You’ll notice that the value is just a tiny bit high, 74.007 instead of 74 exactly. I’ve confirmed that this is due to being limited to three decimal places in T, C, and B.
Are you not convinced? Remember that I opened this thread discussing that the linear-to-ease spline is broken and the tangent should be multiplied by 3/2. Changing the first and last waypoints to ease in/out and entering into my spreadsheet desired tangents of m_in = 3/2*40 = 60 and m_out = 3/2*80 = 120 produces the following T and B parameters and graph:
Any questions?

