<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Thu, Jul 30, 2015 at 6:07 AM Gurjot Singh Bhatti <<a href="mailto:bhattigurjot@gmail.com">bhattigurjot@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 24 July 2015 at 22:43, Dan Dennedy <<a href="mailto:dan@dennedy.org" target="_blank">dan@dennedy.org</a>> wrote:<br>
> Another challenge is to figure out how to represent MLT's Catmull-Rom spline<br>
> curves using the API's Bezier curve functions. I do not have a solid answer<br>
> for that, but I did bookmark this link a while ago:<br>
> <a href="http://www.antigrain.com/__code/include/agg_curves.h.html#catrom_to_bezier" rel="noreferrer" target="_blank">http://www.antigrain.com/__code/include/agg_curves.h.html#catrom_to_bezier</a><br>
> I have not fully analyzed that yet, and I would need to study the topic more<br>
> to do something with it.<br>
<br>
Can I get these catmull-rom points from the mlt_keyframe_spline<br>
keyframe somehow (MLT API)?<br></blockquote><div> </div><div>No, because the beauty of Catmull-Rom is that there are no additional control points. It is automatically the smoothest curve fitted to a set of data points: your keyframes' time position and value. We just need to figure out how to emulate this using a Bezier curve, but I have not been able to look into this deeply.</div><div><br></div><div>I did a Google search on "simulate catmull-rom using bezier." A search result led me to this nice article:</div><div><a href="http://schepers.cc/getting-to-the-point">http://schepers.cc/getting-to-the-point</a><br></div><div>In it he refers to the same Anti-Grain Geometry code I referred to. :-) However, it looks like he also pulled it together into a concise, more readable javascript version.</div><div><br></div><div>Also, see this comment in the MLT code about how additional points before the first and after the last are needed:</div><div><a href="https://github.com/mltframework/mlt/blob/master/src/framework/mlt_property.c#L1072">https://github.com/mltframework/mlt/blob/master/src/framework/mlt_property.c#L1072</a><br></div><div>The code following that (mlt_property_interpolate) handles transitions between different types of interpolation.</div><div><br></div></div></div>