Menge
Modular Pedestrian Simulation Framework for Research and Development
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Attributes | List of all members
Menge::BFSM::PointGoal Class Reference

A simple point goal. The goal is trivially this point. More...

#include <GoalPoint.h>

Inheritance diagram for Menge::BFSM::PointGoal:
Menge::BFSM::Goal Menge::Element

Public Member Functions

 PointGoal ()
 Default constructor.
 
virtual float squaredDistance (const Vector2 &pt) const
 Reports the squared distance from the given point to the goal. More...
 
virtual void setDirections (const Vector2 &q, float r, Agents::PrefVelocity &directions) const
 Set the preferred velocity directions w.r.t. the goal: left, right, and preferred. More...
 
virtual Vector2 getTargetPoint (const Vector2 &q, float r) const
 Returns the closest "target" point in the goal to the given query point. More...
 
virtual Vector2 getCentroid () const
 Return the centroid of the goal.
 
virtual void drawGL () const
 Draws the goal into an OpenGL context.
 
void setPosition (const Vector2 &p)
 Sets the goal's position. More...
 
void setPosition (float x, float y)
 Sets the goal's position. More...
 
- Public Member Functions inherited from Menge::BFSM::Goal
 Goal ()
 Basic constructor.
 
bool hasCapacity () const
 Reports if the goal still has capacity. More...
 
void assign (const Agents::BaseAgent *agent)
 Inform the goal that it has been assigned. More...
 
void free ()
 Inform the goal that an assignment has been removed.
 
void setGoalSet (GoalSet *goalSet)
 Sets this goal's goal set. More...
 
GoalSetgetGoalSet ()
 Returns a pointer to this agent's goal set. More...
 
const GoalSetgetGoalSet () const
 Returns a const pointer to this agent's goal set. More...
 
void setWeight (float weight)
 Sets the goal's weight. More...
 
float getWeight () const
 Retrieves the goal's weight. More...
 
void setCapacity (size_t capacity)
 Sets the goal's capacity. More...
 
size_t getCapacity () const
 Returns this goal's capacity. More...
 
void setID (size_t id)
 Sets the id of the goal. More...
 
size_t getID () const
 Gets the id of the goal. More...
 
- Public Member Functions inherited from Menge::Element
void destroy ()
 This supplants the destructor. More...
 
virtual BFSM::TaskgetTask ()
 Return an optional task associated with this element. More...
 
virtual SceneGraph::GLNodegetSGNode ()
 Returns an optional visualization element associated with the element. More...
 

Protected Attributes

Vector2 _point
 The point for this goal.
 
- Protected Attributes inherited from Menge::BFSM::Goal
float _weight
 The relative weight of this goal.
 
size_t _capacity
 The maximum capacity of this goal.
 
size_t _id
 The id of this goal in its goal set.
 
GoalSet_goalSet
 The goal set to which this goal belongs.
 
size_t _population
 The current "population" of this goal. More...
 
ReadersWriterLock _lock
 The lock to maintain readers-writer access to the structure which control available goals.
 

Additional Inherited Members

- Static Public Attributes inherited from Menge::BFSM::Goal
static const size_t MAX_CAPACITY = -1
 The maximum capacity any goal can hold.
 
- Protected Member Functions inherited from Menge::BFSM::Goal
virtual ~Goal ()
 Destructor.
 
virtual void drawGLGeometry () const
 Draws the goal geometry.
 

Detailed Description

A simple point goal. The goal is trivially this point.

Member Function Documentation

virtual Vector2 Menge::BFSM::PointGoal::getTargetPoint ( const Vector2 q,
float  r 
) const
inlinevirtual

Returns the closest "target" point in the goal to the given query point.

A "valid" target point is the nearest point to the query point that is sufficiently inside the goal region that a disk with the given radius is completely inside the goal. It need not be literally the best value, an approximation is sufficient.

In the case where the goal region is too small to hold the agent, then the "deepest" point in the region is a good approximation.

Parameters
qThe query point.
rThe radius of clearance.
Returns
A 2D position representing the target point.

Implements Menge::BFSM::Goal.

void Menge::BFSM::PointGoal::setDirections ( const Vector2 q,
float  r,
Agents::PrefVelocity directions 
) const
virtual

Set the preferred velocity directions w.r.t. the goal: left, right, and preferred.

The Agents::PrefVelocity class represents a span of velocities that will reach the goal. For a goal that covers a 2D region, the directions in the Agents::PrefVelocity should span the arc subtended by the goal from the query point's perspective. Furthermore, it should have sufficient clearance for a disk with the given radius to pass through. This should be overridden by subclasses to account for their unique geometry.

Parameters
qThe query point.
rThe radius of clearance.
directionsAn instance of Agents::PrefVelocity.

Implements Menge::BFSM::Goal.

void Menge::BFSM::PointGoal::setPosition ( const Vector2 p)
inline

Sets the goal's position.

Parameters
pThe position value.
void Menge::BFSM::PointGoal::setPosition ( float  x,
float  y 
)
inline

Sets the goal's position.

Parameters
xThe x-value of the goal position.
yThe y-value of the goal position.
virtual float Menge::BFSM::PointGoal::squaredDistance ( const Vector2 pt) const
inlinevirtual

Reports the squared distance from the given point to the goal.

Parameters
ptThe query point.
Returns
The squared distance from the point to the goal.

Implements Menge::BFSM::Goal.


The documentation for this class was generated from the following files: