Interface PhysicalPedestrian
-
- All Implemented Interfaces:
-
it.unibo.alchemist.model.NodeProperty
,it.unibo.alchemist.model.physics.properties.PhysicalProperty
,java.io.Serializable
public interface PhysicalPedestrian<T extends Object, P extends Position<P>, Vector<P>, A extends Transformation<P>, F extends GeometricShapeFactory<P, A>> implements PhysicalProperty<T, P, A, F>
A pedestrian's capability to experience physical forces.
-
-
Method Summary
Modifier and Type Method Description abstract Unit
checkAndPossiblyFall()
Turn this node into a fallen pedestrian if it shouldFall. abstract Boolean
shouldFall(List<P> pushingForces)
Determines if this pedestrian subject to pushingForces should fall. abstract P
repulse(Node<T> other)
Computes the repulsion force caused by a node that entered the comfortArea. abstract P
avoid(Node<T> other)
Computes the repulsion force caused by a node that entered the rectangleOfInfluence. abstract List<P>
repulsionForces()
Computes the total repulsion force this node is subject to. abstract List<P>
avoidanceForces()
Computes the total avoidance force this node is subject to. abstract List<P>
fallenAgentAvoidanceForces()
Computes the avoidance force from a fallen pedestrian. abstract Unit
onFall(Function1<Node<T>, Unit> listener)
Adds a listener to be called when node falls. abstract Boolean
isFallen()
Whether the pedestrian has fallen and it is thus an obstacle. abstract Double
getComfortRay()
The comfort ray of this pedestrian, this is added to the radius of its Shape to obtain the comfortArea. abstract Shape<P, A>
getComfortArea()
The comfort area of this pedestrian, it's a circle of radius Shape. abstract Shape<P, A>
getRectangleOfInfluence()
Rectangle of influence. -
Methods inherited from class it.unibo.alchemist.model.physics.properties.PhysicalProperty
physicalForces
-
Methods inherited from class it.unibo.alchemist.model.NodeProperty
cloneOnNewNode, getNode
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
-
Method Detail
-
checkAndPossiblyFall
abstract Unit checkAndPossiblyFall()
Turn this node into a fallen pedestrian if it shouldFall.
-
shouldFall
abstract Boolean shouldFall(List<P> pushingForces)
Determines if this pedestrian subject to pushingForces should fall. According to the work of Pelechano et al this should happen when the majority of pushing forces affecting one individual are approximately in the same direction and the sum of forces have a magnitude high enough to make it lose equilibrium.
-
repulse
abstract P repulse(Node<T> other)
Computes the repulsion force caused by a node that entered the comfortArea. This is derived from the work of Pelechano et al.
-
avoid
abstract P avoid(Node<T> other)
Computes the repulsion force caused by a node that entered the rectangleOfInfluence. This is derived from the work of Pelechano et al.
-
repulsionForces
abstract List<P> repulsionForces()
Computes the total repulsion force this node is subject to.
-
avoidanceForces
abstract List<P> avoidanceForces()
Computes the total avoidance force this node is subject to.
-
fallenAgentAvoidanceForces
abstract List<P> fallenAgentAvoidanceForces()
Computes the avoidance force from a fallen pedestrian.
-
onFall
abstract Unit onFall(Function1<Node<T>, Unit> listener)
Adds a listener to be called when node falls.
-
getComfortRay
abstract Double getComfortRay()
The comfort ray of this pedestrian, this is added to the radius of its Shape to obtain the comfortArea.
-
getComfortArea
abstract Shape<P, A> getComfortArea()
The comfort area of this pedestrian, it's a circle of radius Shape.radius + comfortRay.
-
getRectangleOfInfluence
abstract Shape<P, A> getRectangleOfInfluence()
Rectangle of influence. When a pedestrian enters this area, the node could experience a tangential avoidance force. See avoid.
-
-
-
-