model.c File Reference

#include <limits.h>
#include <assert.h>
#include <math.h>
#include <string.h>
#include "stage_internal.h"
#include "gui.h"

Defines

#define PACKPOSE(P, X, Y, A)   {P->x=X; P->y=Y; P->a=A;}
#define _GNU_SOURCE
#define STG_DEFAULT_MASS   10.0
#define STG_DEFAULT_POSEX   0.0
#define STG_DEFAULT_POSEY   0.0
#define STG_DEFAULT_POSEA   0.0
#define STG_DEFAULT_GEOM_POSEX   0.0
#define STG_DEFAULT_GEOM_POSEY   0.0
#define STG_DEFAULT_GEOM_POSEA   0.0
#define STG_DEFAULT_GEOM_SIZEX   1.0
#define STG_DEFAULT_GEOM_SIZEY   1.0
#define STG_DEFAULT_OBSTACLERETURN   TRUE
#define STG_DEFAULT_LASERRETURN   LaserVisible
#define STG_DEFAULT_RANGERRETURN   TRUE
#define STG_DEFAULT_RANGECOMRETURN   RangecomImpede
#define STG_DEFAULT_BLOBRETURN   TRUE
#define STG_DEFAULT_COLOR   (0xFF0000)
#define STG_DEFAULT_ENERGY_CAPACITY   1000.0
#define STG_DEFAULT_ENERGY_CHARGEENABLE   1
#define STG_DEFAULT_ENERGY_PROBERANGE   0.0
#define STG_DEFAULT_ENERGY_GIVERATE   0.0
#define STG_DEFAULT_ENERGY_TRICKLERATE   0.1
#define STG_DEFAULT_MASK   (STG_MOVE_TRANS | STG_MOVE_ROT)
#define STG_DEFAULT_NOSE   FALSE
#define STG_DEFAULT_GRID   FALSE
#define STG_DEFAULT_OUTLINE   TRUE

Functions

int model_render_polygons (stg_model_t *mod, char *name, void *data, size_t len, void *userp)
int model_handle_mask (stg_model_t *mod, char *name, void *data, size_t len, void *userp)
int model_handle_outline (stg_model_t *mod, char *name, void *data, size_t len, void *userp)
int model_render_nose (stg_model_t *mod, char *name, void *data, size_t len, void *userp)
int model_render_grid (stg_model_t *mod, char *name, void *data, size_t len, void *userp)
void stg_model_global_to_local (stg_model_t *mod, stg_pose_t *pose)
stg_polygon_t * unit_polygon_create (void)
void storage_ordinary (stg_property_t *prop, void *data, size_t len)
void storage_polygons (stg_property_t *prop, void *data, size_t len)
void storage_geom (stg_property_t *prop, void *data, size_t len)
void storage_color (stg_property_t *prop, void *data, size_t len)
void storage_pose (stg_property_t *prop, void *data, size_t len)
stg_model_t * stg_model_create (stg_world_t *world, stg_model_t *parent, stg_id_t id, char *token, stg_model_initializer_t initializer)
void stg_property_print_cb (GQuark key, gpointer data, gpointer user)
void stg_model_print_properties (stg_model_t *mod)
void stg_model_destroy (stg_model_t *mod)
void model_destroy_cb (gpointer mod)
int stg_model_is_antecedent (stg_model_t *mod, stg_model_t *testmod)
int stg_model_is_descendent (stg_model_t *mod, stg_model_t *testmod)
int stg_model_is_related (stg_model_t *mod1, stg_model_t *mod2)
void stg_model_global_velocity (stg_model_t *mod, stg_velocity_t *gvel)
void stg_model_get_global_pose (stg_model_t *mod, stg_pose_t *gpose)
void stg_model_local_to_global (stg_model_t *mod, stg_pose_t *pose)
void stg_model_map_with_children (stg_model_t *mod, gboolean render)
void stg_model_map (stg_model_t *mod, gboolean render)
void model_update_cb (gpointer key, gpointer value, gpointer user)
void stg_model_subscribe (stg_model_t *mod)
void stg_model_unsubscribe (stg_model_t *mod)
void pose_invert (stg_pose_t *pose)
void stg_model_print (stg_model_t *mod)
void model_print_cb (gpointer key, gpointer value, gpointer user)
void stg_get_default_pose (stg_pose_t *pose)
void stg_get_default_geom (stg_geom_t *geom)
int _model_update (stg_model_t *mod)
int stg_model_update (stg_model_t *mod)
int stg_model_startup (stg_model_t *mod)
int stg_model_shutdown (stg_model_t *mod)
void stg_model_get_velocity (stg_model_t *mod, stg_velocity_t *dest)
int stg_model_set_velocity (stg_model_t *mod, stg_velocity_t *vel)
void stg_model_get_geom (stg_model_t *mod, stg_geom_t *dest)
stg_polygon_t * stg_model_get_polygons (stg_model_t *mod, size_t *poly_count)
void stg_model_set_polygons (stg_model_t *mod, stg_polygon_t *polys, size_t poly_count)
void stg_property_destroy (stg_property_t *prop)
void stg_property_callback_cb (gpointer data, gpointer user)
stg_property_t * stg_model_set_property_ex (stg_model_t *mod, const char *propname, void *data, size_t len, stg_property_storage_func_t func)
void stg_model_lock (stg_model_t *mod)
void stg_model_unlock (stg_model_t *mod)
stg_property_t * stg_model_set_property (stg_model_t *mod, const char *propname, void *data, size_t len)
int stg_model_add_property_callback (stg_model_t *mod, const char *propname, stg_property_callback_t callback, void *user)
int stg_model_remove_property_callback (stg_model_t *mod, const char *propname, stg_property_callback_t callback)
int stg_model_remove_property_callbacks (stg_model_t *mod, const char *propname)
int stg_model_set_global_pose (stg_model_t *mod, stg_pose_t *gpose)
int stg_model_set_parent (stg_model_t *mod, stg_model_t *newparent)
int lines_raytrace_match (stg_model_t *mod, stg_model_t *hitmod)
stg_model_t * stg_model_test_collision_at_pose (stg_model_t *mod, stg_pose_t *pose, double *hitx, double *hity)
int stg_model_update_pose (stg_model_t *mod)
void * stg_model_get_property (stg_model_t *mod, const char *name, size_t *size)
void * stg_model_get_property_fixed (stg_model_t *mod, const char *name, size_t size)
void stg_model_property_refresh (stg_model_t *mod, const char *propname)
void stg_model_load (stg_model_t *mod)
void stg_model_save (stg_model_t *model)
stg_model_t * stg_model_root (stg_model_t *mod)
int stg_model_tree_to_ptr_array (stg_model_t *root, GPtrArray *array)

Variables

stg_rtk_fig_t * fig_debug_rays

Define Documentation

#define PACKPOSE P,
X,
Y,
 )     {P->x=X; P->y=Y; P->a=A;}
 

#define _GNU_SOURCE
 

#define STG_DEFAULT_MASS   10.0
 

#define STG_DEFAULT_POSEX   0.0
 

#define STG_DEFAULT_POSEY   0.0
 

#define STG_DEFAULT_POSEA   0.0
 

#define STG_DEFAULT_GEOM_POSEX   0.0
 

#define STG_DEFAULT_GEOM_POSEY   0.0
 

#define STG_DEFAULT_GEOM_POSEA   0.0
 

#define STG_DEFAULT_GEOM_SIZEX   1.0
 

#define STG_DEFAULT_GEOM_SIZEY   1.0
 

#define STG_DEFAULT_OBSTACLERETURN   TRUE
 

#define STG_DEFAULT_LASERRETURN   LaserVisible
 

#define STG_DEFAULT_RANGERRETURN   TRUE
 

#define STG_DEFAULT_RANGECOMRETURN   RangecomImpede
 

#define STG_DEFAULT_BLOBRETURN   TRUE
 

#define STG_DEFAULT_COLOR   (0xFF0000)
 

#define STG_DEFAULT_ENERGY_CAPACITY   1000.0
 

#define STG_DEFAULT_ENERGY_CHARGEENABLE   1
 

#define STG_DEFAULT_ENERGY_PROBERANGE   0.0
 

#define STG_DEFAULT_ENERGY_GIVERATE   0.0
 

#define STG_DEFAULT_ENERGY_TRICKLERATE   0.1
 

#define STG_DEFAULT_MASK   (STG_MOVE_TRANS | STG_MOVE_ROT)
 

#define STG_DEFAULT_NOSE   FALSE
 

#define STG_DEFAULT_GRID   FALSE
 

#define STG_DEFAULT_OUTLINE   TRUE
 


Function Documentation

int model_render_polygons stg_model_t *  mod,
char *  name,
void *  data,
size_t  len,
void *  userp
 

int model_handle_mask stg_model_t *  mod,
char *  name,
void *  data,
size_t  len,
void *  userp
 

int model_handle_outline stg_model_t *  mod,
char *  name,
void *  data,
size_t  len,
void *  userp
 

int model_render_nose stg_model_t *  mod,
char *  name,
void *  data,
size_t  len,
void *  userp
 

int model_render_grid stg_model_t *  mod,
char *  name,
void *  data,
size_t  len,
void *  userp
 

void stg_model_global_to_local stg_model_t *  mod,
stg_pose_t *  pose
 

convert a global pose into the model's local coordinate system

stg_polygon_t* unit_polygon_create void   ) 
 

generate the default name for a model, based on the name of its parent, and its type. This can be overridden in the world file.

void storage_ordinary stg_property_t *  prop,
void *  data,
size_t  len
 

void storage_polygons stg_property_t *  prop,
void *  data,
size_t  len
 

void storage_geom stg_property_t *  prop,
void *  data,
size_t  len
 

void storage_color stg_property_t *  prop,
void *  data,
size_t  len
 

void storage_pose stg_property_t *  prop,
void *  data,
size_t  len
 

set the pose of a model in its parent's CS

stg_model_t* stg_model_create stg_world_t *  world,
stg_model_t *  parent,
stg_id_t  id,
char *  token,
stg_model_initializer_t  initializer
 

create a new model

void stg_property_print_cb GQuark  key,
gpointer  data,
gpointer  user
 

void stg_model_print_properties stg_model_t *  mod  ) 
 

void stg_model_destroy stg_model_t *  mod  ) 
 

free the memory allocated for a model

void model_destroy_cb gpointer  mod  ) 
 

int stg_model_is_antecedent stg_model_t *  mod,
stg_model_t *  testmod
 

int stg_model_is_descendent stg_model_t *  mod,
stg_model_t *  testmod
 

returns TRUE if model [testmod] is a descendent of model [mod]

int stg_model_is_related stg_model_t *  mod1,
stg_model_t *  mod2
 

returns 1 if model [mod1] and [mod2] are in the same model tree

void stg_model_global_velocity stg_model_t *  mod,
stg_velocity_t *  gvel
 

get the model's velocity in the global frame

void stg_model_get_global_pose stg_model_t *  mod,
stg_pose_t *  gpose
 

void stg_model_local_to_global stg_model_t *  mod,
stg_pose_t *  pose
 

convert a pose in this model's local coordinates into global coordinates

void stg_model_map_with_children stg_model_t *  mod,
gboolean  render
 

recursively map a model and all it's descendents

void stg_model_map stg_model_t *  mod,
gboolean  render
 

if render is true, render the model into the matrix, else unrender the model

void model_update_cb gpointer  key,
gpointer  value,
gpointer  user
 

void stg_model_subscribe stg_model_t *  mod  ) 
 

void stg_model_unsubscribe stg_model_t *  mod  ) 
 

void pose_invert stg_pose_t *  pose  ) 
 

void stg_model_print stg_model_t *  mod  ) 
 

void model_print_cb gpointer  key,
gpointer  value,
gpointer  user
 

void stg_get_default_pose stg_pose_t *  pose  ) 
 

void stg_get_default_geom stg_geom_t *  geom  ) 
 

int _model_update stg_model_t *  mod  ) 
 

int stg_model_update stg_model_t *  mod  ) 
 

int stg_model_startup stg_model_t *  mod  ) 
 

int stg_model_shutdown stg_model_t *  mod  ) 
 

void stg_model_get_velocity stg_model_t *  mod,
stg_velocity_t *  dest
 

int stg_model_set_velocity stg_model_t *  mod,
stg_velocity_t *  vel
 

void stg_model_get_geom stg_model_t *  mod,
stg_geom_t *  dest
 

stg_polygon_t* stg_model_get_polygons stg_model_t *  mod,
size_t *  poly_count
 

void stg_model_set_polygons stg_model_t *  mod,
stg_polygon_t *  polys,
size_t  poly_count
 

void stg_property_destroy stg_property_t *  prop  ) 
 

void stg_property_callback_cb gpointer  data,
gpointer  user
 

stg_property_t* stg_model_set_property_ex stg_model_t *  mod,
const char *  propname,
void *  data,
size_t  len,
stg_property_storage_func_t  func
 

void stg_model_lock stg_model_t *  mod  ) 
 

void stg_model_unlock stg_model_t *  mod  ) 
 

stg_property_t* stg_model_set_property stg_model_t *  mod,
const char *  propname,
void *  data,
size_t  len
 

int stg_model_add_property_callback stg_model_t *  mod,
const char *  propname,
stg_property_callback_t  callback,
void *  user
 

int stg_model_remove_property_callback stg_model_t *  mod,
const char *  propname,
stg_property_callback_t  callback
 

int stg_model_remove_property_callbacks stg_model_t *  mod,
const char *  propname
 

int stg_model_set_global_pose stg_model_t *  mod,
stg_pose_t *  gpose
 

set the pose of model in global coordinates

int stg_model_set_parent stg_model_t *  mod,
stg_model_t *  newparent
 

int lines_raytrace_match stg_model_t *  mod,
stg_model_t *  hitmod
 

stg_model_t* stg_model_test_collision_at_pose stg_model_t *  mod,
stg_pose_t *  pose,
double *  hitx,
double *  hity
 

int stg_model_update_pose stg_model_t *  mod  ) 
 

void* stg_model_get_property stg_model_t *  mod,
const char *  name,
size_t *  size
 

void* stg_model_get_property_fixed stg_model_t *  mod,
const char *  name,
size_t  size
 

void stg_model_property_refresh stg_model_t *  mod,
const char *  propname
 

void stg_model_load stg_model_t *  mod  ) 
 

void stg_model_save stg_model_t *  model  ) 
 

stg_model_t* stg_model_root stg_model_t *  mod  ) 
 

int stg_model_tree_to_ptr_array stg_model_t *  root,
GPtrArray *  array
 


Variable Documentation

stg_rtk_fig_t* fig_debug_rays