感觉高手太少了!贝塞尔曲线的延长算法

感觉高手太少了!求一个贝塞尔曲线的延长算法
三次贝塞尔曲线如下图,4个控制点坐标己知。


在其中一端自然延长一段。()


得到新的三次贝塞尔曲线,4个控制点。


这样的功能只是UG里面的一个简简单单的功能,但是我们却没有这个能力。网上搜相关的内容,全是没有任何用处的。
求高手快快出现。

------解决方案--------------------
我也想知道
------解决方案--------------------
这个曲线应该是有公式的吧?

延长一段,再水平方向等分4个点?
------解决方案--------------------
水平方向等分成3段,共4个点。
------解决方案--------------------
你做什么软件呢
这种专业的东西很少有人做的,就是做也是调用函数
------解决方案--------------------
看了楼主以前的帖子,发现楼主研究很久了。同情一个。
------解决方案--------------------
楼主先告诉我4个控制点是怎么画出三次贝塞尔曲线来的,不是要API,而是说算法原理
------解决方案--------------------
感觉没什么很困难的地方啊,可以把你控制点帖上来吗,我可以试试用matlab给你延长一下,然后告诉你具体方法:)
------解决方案--------------------
看你的图不是‘延长’,而是最后一点改了,应该是多了一个点。
------解决方案--------------------
跟NURBS相比,贝赛尔曲线的公式很简单,而且曲线次数永远比控制点数少1,就是控制点坐标的加权和.
延长后的新端点就是最后一个控制点,起始端点不变.延长要求2个曲线在原曲线的末尾端点C2连续(在C1连续,C0连续的基础上),根据这些条件能得出几个方程,联解后可以得出新的控制点坐标(只有2个点需要计算)

推荐北航施法中教授编写的《计算机辅助几何设计与非均匀有理B样条(CAGD&NURBS)》,里面有讲到贝塞尔的部分,你具体看曲线升阶那块就行了
------解决方案--------------------
探讨

楼主先告诉我4个控制点是怎么画出三次贝塞尔曲线来的,不是要API,而是说算法原理

------解决方案--------------------
楼主想要的不是非要把贝塞尔曲线最后一个控制点延长,而是在当前贝塞尔曲线的最后一个端点再追加一个曲线吧?


------解决方案--------------------
简单说下自己的理解:
1、n次贝塞尔曲线和平面上n+1个有序控制点一一对应,知道其中一个很容易算出另一个。
2、n次贝塞尔曲线是关于参数t的n次参数曲线,t取0~1,对应起点到终点。
3、直线延长:利用起/终点的一阶导数,得到的直线。
4、圆弧延长:利用起/终点的一阶导数+二阶导数,计算曲率中心和半径,得到圆弧。
5、函数延长:将t从0~1延长为更大区域a~b,得到延长后的曲线;然后用t=(b-a)*s+a代入,得到关于s的n次参数曲线,s取0~1;反算n+1个控制点。
------解决方案--------------------
任何一个控制点的增加或改变,一定会导致一个完全不同的曲线,所以要只通过增加控制点的方式延长曲线是不可能的。我想的办法是:以最后一个控制点为原点,把其它控制点绕着它旋转180度,画出另一个曲线(可以只画出一部分),这个曲线跟原来的曲线一定是平滑连接的,不会出现折线。实际效果就是把整个曲线绕最后一个控制点旋转180度,这个可能还不能完全达到楼主的要求,因为延长出来的线可能会早早就拐弯了,或者拐弯的方向不对,这种情况下需要把延长部分的曲线做一次镜面映射来调整转弯方向,同时把第二个控制点放到第一个曲线尾端切线上来保证不出现折线。

有点绕口,又不好贴图,不知道说清楚没有。如果我做,我会增加两个控制点,假设原来的三次曲线的控制点是A/B/C/D,仍然保留不变,我增加E/F两个控制点,用D/E/F来画二次曲线,其中F控制点用来控制曲线转弯方向,E控制点放在D点切线的延长线上,通过仔细调整E/F点的位置接近自然的延伸效果。