如何根据若干点绘制平滑的曲线

youfeng888 2013-12-13 02:46:13
描述:已知10个点,根据10个点采用一定的算法拟合了一条曲线。

然后再取x值若干个,得到对应的点(x0, y0), (x1,y1),....(xn, yn)
x是逐渐增大的,y逐渐增大或逐渐减小的。
如何由这些点绘制平滑的曲线呢?

我绘制的曲线不平滑,x轴采用了对数坐标,没段的比例不一致,分别为10倍关系。
我采用了贝塞尔曲线来绘制结果效果不理想,尤其是在x轴每段的分界的地方有突变,原因是后面一段x取值必然比前一段大导致。
大家可有更好的办法,绘制相对平滑的曲线!!!
...全文
1112 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
youfeng888 2013-12-21
  • 打赏
  • 举报
回复
解决了:问题时对数坐标造成的,后来取自变量时,需要将自变量转化为相对于坐标原点的垂直距离。 例如:刻度【f0, fn】, 在这之间取fi, 我们可以求出xi, 方法如下: xi = (xn-x0)* log(fi/f0)/log(fn/f0) + x0; 其中: x0为f0对应的x坐标, xn为fn对应的x坐标 前天:x 轴采用的是对数坐标,例如:第一个刻度为1,则第二个刻度为10, 第三个刻度为100,依此规律即可。
sichuanwww 2013-12-19
  • 打赏
  • 举报
回复
excel里居然绘制得很平滑。 相信大公司的集体力量。
xiaohuh421 2013-12-19
  • 打赏
  • 举报
回复
要平滑需要作中间处理的, 阴影,虚化这些.
challengerhawk 2013-12-19
  • 打赏
  • 举报
回复
自己估计曲线模型,设参数求解曲线方程,然后画出来,灰常准确的呢
zhoujk 2013-12-19
  • 打赏
  • 举报
回复
1-10之间的跨度为1,10-100之间的跨度为10,你应该这么做,每一级都是对数递增
youfeng888 2013-12-19
  • 打赏
  • 举报
回复
还是对数坐标出的问题。摸索中。谢谢大家关注啦。
baita96 2013-12-18
  • 打赏
  • 举报
回复
如果用GDI+的DrawCurve,直接就平滑了。GDI的PolyLine不行。
youfeng888 2013-12-16
  • 打赏
  • 举报
回复
是的,是的。但是excel里居然绘制得很平滑。
zhoujk 2013-12-15
  • 打赏
  • 举报
回复
可能是对数坐标导致这个问题,你放到普通坐标里试一下先
youfeng888 2013-12-13
  • 打赏
  • 举报
回复
主要是因为x轴采用对数坐标,每段之间交接的地方存在问题。
lj8001 2013-12-13
  • 打赏
  • 举报
回复
图形学有求导算法的 PolyBezier不能通过点
worldy 2013-12-13
  • 打赏
  • 举报
回复
使用PolyBezier函数
youfeng888 2013-12-13
  • 打赏
  • 举报
回复
如果X轴只有一段,那显然符合规律,曲线绘制挺好的。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧