载入中...
搜索中...
未找到
ObstacleField.cpp
浏览该文件的文档.
16glm::vec3 normalizeSafe(const glm::vec3& v, const glm::vec3& fallback = glm::vec3(0.f, 1.f, 0.f)) {
29void ObstacleField::bakeEmpty(const glm::vec3& originMin, const glm::ivec3& d, float cs, float fillDistance) {
108 const float dx = sampleStatic(p + glm::vec3(e, 0.f, 0.f)) - sampleStatic(p - glm::vec3(e, 0.f, 0.f));
109 const float dy = sampleStatic(p + glm::vec3(0.f, e, 0.f)) - sampleStatic(p - glm::vec3(0.f, e, 0.f));
110 const float dz = sampleStatic(p + glm::vec3(0.f, 0.f, e)) - sampleStatic(p - glm::vec3(0.f, 0.f, e));
140void ObstacleField::resolve(glm::vec3& position, glm::vec3& velocity, float agentRadius, float predictTime) const {
EVEngine assertion entry point, backed by zeroerr.
#define EV_PARAM_CHECK(cond,...)
Validate a function parameter / public API precondition.
Definition Assert.h:30
void setDynamicSources(std::vector< DynamicObstacleSource > sources)
Replace the dynamic obstacle list.
Definition ObstacleField.cpp:71
void bakeEmpty(const glm::vec3 &originMin, const glm::ivec3 &dims, float cellSize, float fillDistance=10.f)
Bake an empty (all free) box field.
Definition ObstacleField.cpp:29
void carveBox(const glm::vec3 &minCorner, const glm::vec3 &maxCorner)
Carve a solid axis-aligned box (min with existing).
Definition ObstacleField.cpp:55
ObstacleSample sample(const glm::vec3 &p) const
Sample combined static+dynamic distance and gradient at p.
Definition ObstacleField.cpp:129
void carveSphere(const glm::vec3 ¢er, float radius)
Carve a solid sphere into the static grid (min with existing).
Definition ObstacleField.cpp:40
std::vector< DynamicObstacleSource > dynamicSources
Definition ObstacleField.h:34
void resolve(glm::vec3 &position, glm::vec3 &velocity, float agentRadius, float predictTime) const
Push an agent out of obstacles and keep feasible tangential velocity.
Definition ObstacleField.cpp:140
Definition AgentInstanceRenderer.cpp:5