it.unibo.alchemist.model.environments.EnvironmentWithGraph.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of alchemist-euclidean-geometry Show documentation
Show all versions of alchemist-euclidean-geometry Show documentation
Alchemist geometric components for Euclidean spaces
/*
* Copyright (C) 2010-2023, Danilo Pianini and contributors
* listed, for each module, in the respective subproject's build.gradle.kts file.
*
* This file is part of Alchemist, and is distributed under the terms of the
* GNU General Public License, with a linking exception,
* as described in the file LICENSE in the Alchemist distribution's top directory.
*/
package it.unibo.alchemist.model.environments
import it.unibo.alchemist.model.EnvironmentWithObstacles
import it.unibo.alchemist.model.Obstacle
import it.unibo.alchemist.model.Position
import it.unibo.alchemist.model.geometry.ConvexShape
import it.unibo.alchemist.model.geometry.Transformation
import it.unibo.alchemist.model.geometry.Vector
import it.unibo.alchemist.model.geometry.navigationgraph.NavigationGraph
/**
* An [EnvironmentWithObstacles] providing a [NavigationGraph]. This is a graph whose nodes are [ConvexShape]s
* representing areas of the environment traversable by agents (namely, walkable areas), whereas edges represent
* connections between these areas. For instance, in an indoor environment, nodes should represent rooms and corridors,
* whereas edges should represent doors and passages. This data structure is also known as
* [navigation mesh](https://en.wikipedia.org/wiki/Navigation_mesh).
*/
interface EnvironmentWithGraph : EnvironmentWithObstacles
where W : Obstacle,
P : Position
, P : Vector
,
A : Transformation
,
N : ConvexShape
{
/**
* The navigation graph.
*/
val graph: NavigationGraph
}