## 逆行算法调用说明 ### 1. 代码调用 ``` /** * 第一个参数@points 组成观测区域的彼此相邻的点 * 第二个参数@_keepTime 保持时间 * 第三个参数@_direction 正确行进的方向方向 */ IndirectAlg indirectAlg((std::initializer_list){{0.0, 0.0}, {1000.0, 0.0}, {1000.0, 1000.0}, {0.0, 1000.0} }, 5, {1, 1}); //因为数据时流数据,下面的调用应该时在一个循环里面,处理完一条接着处理下一条 //构建传入的数据 Record record; record.id = 1; //目标ID record.timestamp = time(0); //时间戳 record.coordinate = {2.0, 3.0}; // 坐标 //判断是否逆行 indirectAlg.isRetrograde(record) ``` ### 2 测试用例 test_right_walk2.c ```test_right_walk2.c #include /* cos */ #include #include 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){{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(); } ``` ### 3 编译 安装好so包后,用如下的方式编译,alg是逆行算法包,usgcommon是算法用的的公共包,pthread是系统的线程包 ``` g++ -std=c++11 test_right_walk2.c -o test_right_walk2 -lalg -lusgcommon -lpthread ```