使用c++判断类型并定义UNKNOWN = 0, UNKNOWN_MOVABLE = 1, UNKNOWN_UNMOVABLE = 2, PEDESTRIAN = 3, BICYCLE = 4, VEHICLE = 5, MAX_OBJECT_TYPE = 6,五种类型的关联距离计算
时间: 2023-08-26 10:03:50 浏览: 66
C++计算两点之间的距离(两种实现方式)
可以使用C++中的枚举类型来表示这些物体类型,同时定义一个结构体来存储物体的位置信息和类型信息。以下是示例代码:
```
enum ObjectType {
UNKNOWN = 0,
UNKNOWN_MOVABLE = 1,
UNKNOWN_UNMOVABLE = 2,
PEDESTRIAN = 3,
BICYCLE = 4,
VEHICLE = 5,
MAX_OBJECT_TYPE = 6
};
struct Object {
ObjectType type;
float x;
float y;
};
float calculateDistance(Object obj1, Object obj2) {
// 根据obj1和obj2的位置信息计算它们之间的距离
float dist = sqrt(pow(obj1.x - obj2.x, 2) + pow(obj1.y - obj2.y, 2));
// 如果两个物体类型相同,则将距离乘以一个系数,以便更好地反映它们之间的相似性
if (obj1.type == obj2.type) {
switch (obj1.type) {
case UNKNOWN:
case UNKNOWN_MOVABLE:
case UNKNOWN_UNMOVABLE:
dist *= 0.5;
break;
case PEDESTRIAN:
case BICYCLE:
dist *= 0.8;
break;
case VEHICLE:
dist *= 1.0;
break;
default:
break;
}
}
return dist;
}
```
以上代码定义了一个ObjectType枚举类型,包含了五种物体类型和一个MAX_OBJECT_TYPE枚举值。同时定义了一个Object结构体,包含了物体的类型和位置信息。calculateDistance函数可以根据两个物体的位置信息计算它们之间的距离,并根据它们的类型信息对距离进行加权。
阅读全文