convert bezier curve with N point to many cubic bezier curve

痴心易碎 提交于 2019-12-13 02:55:27

问题


I have bezier curve with about 48 ctrl points and I want to transform it to many cubic bezier curves... Any algorthim , math theory or just a link may help :) ??


回答1:


Math theory: you cannot do this. An nth order Bezier curve cannot be represented as any number of (n-1)th order Bezier curves, because the curvatures cannot be faithfully represented. You can approximate it, but you won't get an identical result.

Practice: you can cut up your 48th order curve into sections of simple curve, where all the control points are on the same side of the start/end baseline, and the midpoint on the curve w.r.t your control variable is roughly in the center of the convex hull for the curve. For such curves, low level curves are reasonable approximations. You can do this by finding the inflections on the curve using the first, second, etc. derivative roots for your 48th order curve (see http://pomax.github.com/bezierinfo/#derivatives and http://pomax.github.com/bezierinfo/#splitting) and then running de Casteljau's algorithm to split up the curve between each inflection point's control variable value. You can then approximate each of the resultant subcurves with cubic curves and the result will look pretty close (or look identical at the pixel level) to your original curve.

That said: why the hell do you even have a 48th order curve, that's insane =P



来源:https://stackoverflow.com/questions/15347115/convert-bezier-curve-with-n-point-to-many-cubic-bezier-curve

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!