0

道路没有任何高程,y 坐标为 0。汽车是 3d,但对于碰撞检测,可以将其视为 2d 矩形。

我的结构:

struct rectangle
{
    // 4 coordinates of the rectangle
    float x1_left, y1_left;
    float x1_right, y1_right;

    float x2_left, y2_left;
    float x2_right, y2_right;

    double thetaSlope;
};

我有构成道路的所有这些矩形的数组,最初汽车在第一个矩形内。

我搜索了碰撞检测并发现 - 两个矩形之间的简单 2d 碰撞检测,但是如何确定我的汽车是否位于特定的矩形中,汽车应该能够轻松地从一个矩形移动到另一个矩形,但不能从侧面出来矩形。

我正在寻找一个相当简单的解决方案。道路顶视图

4

1 回答 1

0

创建 Point2d 类并将矩形定义为点的容器。例如:

    struct rectangle
    {
        Point2d p1;
        Point2d p2;
        Point2d p3;
        Point2d p4;

        double thetaSlope;
    };

或者

    struct rectangle
    {
        Point2d points[4];

        double thetaSlope;
    };

有了这个抽象代码就更简单了。

您应该将矩形的边标记为可穿透或不可穿透。在碰撞检测中只参与不可穿透的侧面。

我认为使用多边形而不是矩形是更简单的解决方案。您可以将整个地图定义为一个大多边形,而不要处理从一个矩形到另一个矩形的移动。

于 2013-03-14T06:56:33.443 回答