怎样画过几个点的曲线?

时间:2022-03-18 20:29:33
怎样画过几个点的曲线呢?很想知道算法,或者源代码。非常感谢。chengdu_china@126.com

8 个解决方案

#1


不是直接lineto的,而是真正的曲线。这条曲线要通过预定的几个点。谢谢

#2


你要画什么样的曲线,二次,三次...,你不说清楚,不过重要的是:已知点的越多,曲线拟合的效果越好.

#3


看看PolyBezier函数。

#4


http://www.codeguru.com/cpp/g-m/gdi/article.php/c3689/

#5


先用这些点进行曲线拟合得到曲线的函数,然后再绘图
曲线拟合可以用最小二乘法

#6


moveto lineto 

#7


用PolyBezier函数,在该函数中指定你要经过的点就可以了。

#8


#问题建模
    假设有三个点A,B,C,两两之间有无穷多条曲线。令L1为A-B之间的曲线,其曲率为w1;L2为B-C之间的曲线,曲率为w2;
记d为w1与w2的差,问题转化为:求L1、L2使得d最小。

#解决办法
    L1,L2的选取应该是光滑的,而且是我们所熟悉的曲线。可选样本有:圆,二次函数曲线,三角函数曲线等等。
    (1)若选圆来拟合,则要确定圆心与半径。
    (2)若选二次函数曲线来拟合,则要确定对称轴与开口大小。
    (3)若选三角函数曲线来拟合,则要确定周期与起始相位。
     
     最优化问题求解可以用1,均方误差最小准则,也可以用2,最小二乘法准则。

#1


不是直接lineto的,而是真正的曲线。这条曲线要通过预定的几个点。谢谢

#2


你要画什么样的曲线,二次,三次...,你不说清楚,不过重要的是:已知点的越多,曲线拟合的效果越好.

#3


看看PolyBezier函数。

#4


http://www.codeguru.com/cpp/g-m/gdi/article.php/c3689/

#5


先用这些点进行曲线拟合得到曲线的函数,然后再绘图
曲线拟合可以用最小二乘法

#6


moveto lineto 

#7


用PolyBezier函数,在该函数中指定你要经过的点就可以了。

#8


#问题建模
    假设有三个点A,B,C,两两之间有无穷多条曲线。令L1为A-B之间的曲线,其曲率为w1;L2为B-C之间的曲线,曲率为w2;
记d为w1与w2的差,问题转化为:求L1、L2使得d最小。

#解决办法
    L1,L2的选取应该是光滑的,而且是我们所熟悉的曲线。可选样本有:圆,二次函数曲线,三角函数曲线等等。
    (1)若选圆来拟合,则要确定圆心与半径。
    (2)若选二次函数曲线来拟合,则要确定对称轴与开口大小。
    (3)若选三角函数曲线来拟合,则要确定周期与起始相位。
     
     最优化问题求解可以用1,均方误差最小准则,也可以用2,最小二乘法准则。