一步一步用arduino与Processing实现雷达扫描(2)

雷达表盘的绘制相对来说简单,属于粗线条的工作,在实现了雷达的表盘绘制以后,我们接下来的工作慢慢开始细致化了,当然,这能更大程度的让我们熟悉Processing的用法。
在这篇文章中,我们重点实现扫描线的拖影效果以及扫描目标点的绘制

首先我们来看,扫描的拖影效果实现。拖影效果实现的原理简单,理论上来说就是利用fill的第四个参数的变化在绘制一个线簇,利用渐变的线簇来实现拖影,但线簇有一个问题,那就是线与线之间会有空隙,不好看!
拖影本身就是一个扇形,所以这里我们用到一个acr函数来绘制扇形,几个小扇形共同形成一个完成的扇形拖影
代码如下:

 //拖影扫描线的绘制
  for(int col=1;col<20;col++)
  {
    fill(0,180,0,10*col);
    arc(width/2,height/2,2*r,2*r,
    a+0.01*(col-1),
    a+0.01*col);   
  }

运行效果如下:
一步一步用arduino与Processing实现雷达扫描(2)_第1张图片

接下来,我们要实现扫描目标的模拟现实(这些模拟目标暂定用随机函数来实现,进入硬件和软件联调的阶段,我们就更换为实际数据)。在实现之前,我们要想好现实效果。
1、假设你的设计效果是扫描的目标点被扫描到后扫描一圈后如果目标继续存在就继续现实,否则就会慢慢淡去,慢慢消失。效果设计好了,我们要预想到,这些点不能是一眨眼就消失的,所以,这些目标点要在屏幕上持续显示一段时间,也就是说,我们要把这些点储存起来才可以。故此,我们必须用到可以存储数据的对象——数组(当然,你要把这些点存储成文件也是可以的,只不过更加麻烦)。
2、除了上面的问题,我们要注意,仅仅绘制一个点既不符合真是的目标体积大小的表现,也无法在表盘上显示清楚,一个点太小,不利于观察者看清楚,所以我们这里用填充了颜色的圆来替代(这里我们设计一个类来充当目标点)。
我们来看代码:

   ArrayList cparr = new ArrayList(); 
   CirclePoint cpt=new CirclePoint(px,py);
   cparr.add(cpt);
   for (int c=0;c

上述代码中的CirclePoint类是我们设计的一个替代扫描目标点的类,其中我为这个类设计了Alf属性,用于存储它的透明度,我们这篇中不重点讲述类如何设计(下一篇中会详细介绍)。我们重点要理解,这些点都要被存储起来。

到这,我们的运行效果基本可以了,我们看看效果:
一步一步用arduino与Processing实现雷达扫描(2)_第2张图片

接下来,我们的目标就是完善表盘的显示,封装模拟目标点,以及改善显示的真实性。

你可能感兴趣的:(Arduino,Processing,程序绘图,Arduino探索,processing摸索学习,雷达效果,超声波传感器,arduino,processing绘图,processing互动)