mechart 发表于 2013-1-9 06:34:01

怎样动态绘制数据曲线?

大家好!经过一段时间的学习,初步掌握了arduino和processing的应用,目前碰到的问题是:

(1)我从串口传来一组数据,想把它绘制成时间历程曲线,由于同时还有绘图,所以draw函数写成了如下的样子:

void draw() {
// Reset scene
background(0);
lights();

plotCurves();

output();
}

plotCurves函数:

void plotCurves(){
stroke(255,0,0);
strokeWeight(2);
line(xPos,previousData,xPos+1,currentData);

if(xPos>=width){
    xPos=0;
}
else
{
    xPos++;
}

}


这样会导致之前绘制的线段会被background这句覆盖掉,从而只显示一个跳动的点。


困扰我两天了,请问有什么好办法啊?谢谢

bacon6581 发表于 2013-1-9 12:45:40

建一个数组(例如存放100个数据)
当串口接收到一个数据,把第99个数据移到第100,98移到99.......第1个数据移到第2个
把新接收到的数据放第一个
把这100个数据输出
就是一条曲线

tyxiang 发表于 2013-1-9 20:31:51

background放setup里面

mechart 发表于 2013-1-12 17:45:13

tyxiang 发表于 2013-1-9 20:31 static/image/common/back.gif
background放setup里面

这样绘图不能清除背景。出现类似拖影的情况。

mechart 发表于 2013-1-12 17:47:59

bacon6581 发表于 2013-1-9 12:45 static/image/common/back.gif
建一个数组(例如存放100个数据)
当串口接收到一个数据,把第99个数据移到第100,98移到99.......第1个数据 ...

我知道如果不刷新背景的话,processing是可以直接实现绘图的,问题是我同时绘制其他动画时需要刷新背景,所以导致数据图不能暂留在屏幕上。

tyxiang 发表于 2013-1-23 09:36:58

本帖最后由 tyxiang 于 2013-1-23 09:41 编辑

mechart 发表于 2013-1-12 17:47 static/image/common/back.gif
我知道如果不刷新背景的话,processing是可以直接实现绘图的,问题是我同时绘制其他动画时需要刷新背景, ...

如果你要刷新背景,那就必须每次画所有的点。

数据量大吗?数据量不大按照bacon6581的思路应该没问题。数据量大的话,就按照屏幕宽度开一个固定数量的数组,然后每进来一个新数就丢掉第一个,所有数往前推,新数放最后一个,然后绘图。

darkorigin 发表于 2013-4-14 20:32:19

楼主大人,你的全部代码方便贴一下么?刚入门想找资料学习,现在资料很少啊
求你的代码,错的也行。呵呵~~~
好多绘图函数啥的都不会用,E文太差。谢谢!

11721206 发表于 2013-9-5 09:56:29

darkorigin 发表于 2013-4-14 20:32 static/image/common/back.gif
楼主大人,你的全部代码方便贴一下么?刚入门想找资料学习,现在资料很少啊
求你的代码,错的也行。呵呵~~ ...

你好,你对tyxiang的问题解决了么?我现在也是在processing上面画三条曲线,然后也是动态的。现在画了好多次都没成功!!求大神帮忙!!thx

“将数据量大吗?数据量不大按照bacon6581的思路应该没问题。数据量大的话,就按照屏幕宽度开一个固定数量的数组,然后每进来一个新数就丢掉第一个,所有数往前推,新数放最后一个,然后绘图“。
页: [1]
查看完整版本: 怎样动态绘制数据曲线?