我用一组数据绘制了时间、温度的曲线,在曲线上的两点之间分布的不规律的点,我想在这两点间不增加点的情况下使两点分布的点连接后变为弧形线,类似反比例函数第四象限的样子,怎么实现啊。请高手知道啊。
X轴为时间,Y轴为温度
http://photo.163.com/phgfdk@126/big/#aid=225455034&id=7060956296
http://photo.163.com/phgfdk@126/big/#aid=225455034&id=7060986332
两幅图中蓝色线是变换前后的样子。使用一个按钮点击控制变成这样
X轴为时间,Y轴为温度
http://photo.163.com/phgfdk@126/big/#aid=225455034&id=7060956296
http://photo.163.com/phgfdk@126/big/#aid=225455034&id=7060986332
两幅图中蓝色线是变换前后的样子。使用一个按钮点击控制变成这样
解决方案 »
- vc++ 创建windows 窗体应用程序提示出错:库没有注册
- 我在静态控件上放置了几个按钮,点击其中一个按钮,在AfxMessageBox()后,其他按钮被隐藏???
- 24岁开始学VC,晚吗?
- 将dll整合到工程中
- 想改变工程生成的exe文件的名字,在哪里设定? 谢啦~
- ListCtrl中怎么在表头上加入指示Item顺序的小三角?
- 菜鸟的疑惑:len = recv(ServerSock,buf,US_MAXSIZE,0);recv(ServerSock,(char*)&bitSize,sizeof(bitSize)+1,0);有什么区别?
- 各位,请大家看看,小弟的这个问题:。。来者有分!
- 各位,刚才的问题已经解决,非常感谢,现在有个新的问题讨论
- mfc如何播放只有一帧的.swf文件
- 求助一个多线程的问题
- 平时说的虚拟网卡,虚拟声卡是指网卡,声卡驱动吗?
struct Point2d {double X, Y;};
//3次B样条曲线
void Calc3BSpline(const Point2d &p1,
const Point2d &p2,
const Point2d &p3,
const Point2d &p4,
const int num, //插入的点数
FcPoint2d *pt) //结果,pt数组的大小应为num+1
{
double t; for(int i=0; i <= num; i++)
{
t=double(i)/double(num);
pt[i].X=(( -p1.X + 3*p2.X - 3*p3.X + p4.X)*t*t*t +
( 3*p1.X - 6*p2.X + 3*p3.X )*t*t +
(-3*p1.X + 3*p3.X )*t +
( p1.X + 4*p2.X + p3.X ))/6.0f; pt[i].Y=(( -p1.Y + 3*p2.Y - 3*p3.Y + p4.Y)*t*t*t +
( 3*p1.Y - 6*p2.Y + 3*p3.Y )*t*t +
(-3*p1.Y + 3*p3.Y )*t +
( p1.Y + 4*p2.Y + p3.Y ))/6.0f;
}
}
//------------------------------------------------------------------------
还可以参见http://blog.sina.com.cn/s/blog_4c8b0d60010008n6.html
看看是不是你想要的
http://paulbourke.net/miscellaneous/interpolation/
BOOL PolyBezier(
const POINT* lpPoints,
int nCount
);