1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
| #include <usg_common.h> /* cos */
| #include <graph.h>
| #include <IndirectAlg.h>
| using namespace std;
|
| int test2() {
| // IndirectAlg indirectAlg({ {{0.0, 0.0}, {1000.0, 0.0}}, {{1000.0, 0.0}, {1000.0, 1000.0}}, {{1000.0, 1000.0}, {0.0, 1000.0}}, {{0.0, 1000.0}, {0.0, 0.0}} }, 5, {1, 1});
| /**
| * 第一个参数@points 组成观测区域的彼此相邻的点
| * 第二个参数@_keepTime 保持时间
| * 第三个参数@_direction 正确行进的方向方向
| */
| IndirectAlg indirectAlg((std::initializer_list<Point>){{0.0, 0.0}, {1000.0, 0.0}, {1000.0, 1000.0}, {0.0, 1000.0} }, 5, {1, 1});
|
| int i = 0;
| // time_t start_time;
| srand((unsigned) time(0));
|
| double rx, ry;
| bool isRetrograde;
| //起点
| Point start = {0, 0};
| //传入的流数据记录信息Record
| Record record;
| record.id = 1; //目标ID
| record.timestamp = time(0); //时间戳
| record.coordinate = start; // 坐标
| // time(&start_time);
| //判断是否逆行
| while(!(isRetrograde = indirectAlg.isRetrograde(record)) ) {
| rx = ((double)(rand()%10))/100000;
| ry = ((double)(rand()%10))/100000;
|
| //std::cout << timestamp << ":" << << "isRetrograde" << isRetrograde;
| // err_msg(0, "%ld : {%f, %f} %d\n", record.timestamp, record.coordinate.x, record.coordinate.y, isRetrograde);
| record.timestamp = time(0);
|
| //if (difftime(time(0), start_time) > 1)
| if (i > 10)
| {
| record.coordinate = {record.coordinate.x - rx , record.coordinate.y - ry};
| } else {
| record.coordinate = {record.coordinate.x + rx , record.coordinate.y + ry};
| }
|
| if (i > 100)
| break;
|
| sleep(1);
| i++;
| }
| printf("return %ld : {%f, %f} %d\n", record.timestamp, record.coordinate.x, record.coordinate.y, isRetrograde);
| return 0;
| }
|
|
| int main() {
| test2();
|
| }
|
|