uint32 IntersectionInfoCache::setIntersectionInfoMap(uint8 inlinkdir, uint64 inlinkid) //给地图设置路口信息 { int32 linkindex = RGDataManagerInstance->realLinkId2Idx(inlinkid); RoadLinkInfo* curlink = RGDataManagerInstance->GetRoadInfoPtr(linkindex); NodeInfo Nodeinfo; uint32 index = (inlinkdir == 1) ? curlink->s_inersection_form_index : curlink->e_inersection_form_index; if(index == 0xFFFFFFFF) { bool start = (inlinkdir == 1) ? true : false; get_node_info(curlink, Nodeinfo, start); if(Nodeinfo.inlinks.empty() || Nodeinfo.outlinks.empty()) { cout << "ERROR: Intersection node_info is empty!" << endl; uint32_t tileid = (uint32)(inlinkid>>32); uint16_t URID = (uint16)((inlinkid & 0x00000000FFFF0000)>>16); uint16_t TPID = (uint16)(inlinkid & 0x000000000000FFFF); cout<<"URID:"<<URID<<" tileid:"<< tileid << " TPID:" << TPID << " dir:" << inlinkdir <<endl; } index = intersection_form_index; std::vector<IntersectionLinkInfo>& interseclinks = map_intersectionInfo_[intersection_form_index].links; //inlink makeIntersectionInfo(true, Nodeinfo.inlinks, interseclinks); //outlink makeIntersectionInfo(false, Nodeinfo.outlinks, interseclinks); LinePoint centerpoint = {0.0, 0.0}; double radius = 0.0; vector<LinePoint> shapepoints;//各link的交点坐标 calcInsectionCenterPoint(interseclinks, shapepoints, centerpoint); float radiusMeter = 0.0; calcInsectionCenterRadius(shapepoints, centerpoint, radius, radiusMeter); calcLinkOrder(interseclinks, centerpoint, radius); std::sort( interseclinks.begin(), interseclinks.end() ); intersection_form_index++; //路口index加1 } return index; }
时间: 2024-03-28 08:37:03 浏览: 13
这段代码是一个函数,作用是给地图设置路口信息。具体来说,它接受两个参数:一个是inlinkdir,表示入口道路的方向;另一个是inlinkid,表示入口道路的ID。然后,它根据这些信息找到对应的道路信息,计算出路口的中心点、半径以及各个连接道路的顺序信息,并将这些信息存储在一个IntersectionInfoCache类的map_intersectionInfo_成员变量中。如果输入的inlinkid无法在地图中找到对应的道路信息,则会输出错误信息并返回0xFFFFFFFF。
具体实现上,它首先根据inlinkdir和inlinkid找到对应的道路信息,然后获取该道路的起点或终点,进一步获取该点的入口和出口道路信息。如果该点没有入口或出口道路,则输出错误信息并返回0xFFFFFFFF。否则,它计算出路口的中心点、半径以及各个连接道路的顺序信息,并将这些信息存储在IntersectionInfoCache类的map_intersectionInfo_成员变量中。最后,它返回该路口信息在map_intersectionInfo_中的索引值。
相关问题
matlab中int8 int16 int32 int64 uint8 uint16 uint32 uint64 double single的范围
在 MATLAB 中,这些数据类型的范围如下:
- int8: -128 到 127
- int16: -32768 到 32767
- int32: -2147483648 到 2147483647
- int64: -9223372036854775808 到 9223372036854775807
- uint8: 0 到 255
- uint16: 0 到 65535
- uint32: 0 到 4294967295
- uint64: 0 到 18446744073709551615
- single: IEEE 单精度浮点数,范围为 -3.4028235e38 到 3.4028235e38
- double: IEEE 双精度浮点数,范围为 -1.7976931348623157e308 到 1.7976931348623157e308
需要注意的是,不同的数据类型在存储空间和精度上有所差别,选择合适的数据类型可以提高程序的效率和准确性。
uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型
uint8_t / uint16_t / uint32_t / uint64_t 是C语言中的无符号整型数据类型,它们分别占用1字节、2字节、4字节和8字节的内存空间,用于表示不同范围内的非负整数。其中,uint8_t可以表示0~255之间的整数,uint16_t可以表示0~65535之间的整数,uint32_t可以表示0~4294967295之间的整数,uint64_t可以表示0~18446744073709551615之间的整数。
以下是一个使用uint16_t类型的例子:
```c
#include <stdio.h>
#include <stdint.h>
int main() {
uint16_t num = 65535;
printf("The value of num is %u\n", num); // 输出:The value of num is 65535
return 0;
}
```