1.3.c 碰撞检测算法:AABB, SAT代码解析

category
type
status
slug
date
summary
tags
password
icon
用知识武装自己!☺ —漫长的季节 龚飙
🏰代码及环境配置:请参考 环境配置和代码运行!

本节提供了AABB和SAT算法的代码测试.

1.3.c.1 AABB, SAT算法实现

我们在common/geometry.py 定义了一个Box类, 类内实现了碰撞检测函数has_overlap() .参考了Apollo中modules/common/math/box2d.cc 的实现.代码如下:
该函数先进行了AABB check,如果不通过则进行SAT算法判定.把两个box的每条边投影到了两个box每条边上.由于box的有两组平行边,因此计算量可以减少一半.只需要投影到每个box的两组边,一共4组边即可.

1.3.c.2 AABB, SAT算法测试

tests/basic/sat_collision_check_test.py中进行了算法测试,通过生成随机的两个box,进行碰撞校验.代码如下:
测试结果如图,红色代表碰撞,黑色代表没有碰撞.
notion image
上一篇
动手学控制理论
下一篇
端到端-理论与实战视频课程
Loading...