SDL中文论坛

标题: 使用tplot_chart绘图 [打印本页]

作者: ancientcc    时间: 2016-5-26 20:50
标题: 使用tplot_chart绘图
本帖最后由 ancientcc 于 2016-8-12 10:48 编辑

tplot_chart用于在场景中绘图。它的特点是把要画的内容平摊到单元。它要求数据是在一个文件中,内容是以着一个自定义的块一个个铺下去。它要求块的前四字节指示一个升序的时间值。举个例子,块是以下的一个struct。
  1. struct ttemperature: public tplot_chart::titem
  2. {
  3.         int value1;
  4.         int value2;
  5.         int battery;
  6. };
复制代码

为内存和struct一致,该struct不能定义成员函数。titem是个只有时间字段的struct。
  1. struct titem
  2. {
  3.         int time;
  4. };
复制代码


使用tplot_chart绘图要经过三个步骤:生成指示单元如何画的unit_params,在大地图绘图和在小地图绘图。

步骤一:生成指示如何画单元的unit_params
它是通过调用generate。
  1. void generate(tfile& file, int used_units, int zoom)
  2. file:数据文件。
  3. used_units:可使用的单元数。
  4. zoom:每单元像素数。
复制代码

它会生成unit_params,指示单元该如何画图表。下图是当中过程。
(, 下载次数: 2068)
如何计算每个单元要使用多少个样本?
假定要使用单元数(N)是固定的,样本数(M)是固定的。使用前方优先扩散法,它生成的结果余数被分摊到前面的J个单元,分摊到余数的单元增加一个样本。
  1. int integer = M / N;
  2. int can_spread = M - integer * N;
  3. for (int num = 0; num < N; num ++) {
  4.         int integer2 = integer;
  5.         if (can_spread) {
  6.                 integer2 ++;
  7.                 can_spread --;
  8.         }
  9.         // integer2指示分配给该单元的样本数
  10. }
复制代码


1、每个样本都有time字段,而且这个time值是升序。
2、样本是按时间被平均到N个单元,而不是简单按样本数。







欢迎光临 SDL中文论坛 (http://www.libsdl.cn/bbs/) Powered by Discuz! X3.3