calcul.h
Go to the documentation of this file.
00001 /***************************************************/
00002 /* Last Revised: 
00003 $Id: calcul.h 4129 2007-08-21 23:16:24Z gerkey $
00004 */
00005 /***************************************************/
00006 
00007 #ifndef Calcul
00008 #define Calcul
00009 
00010 #include <stdio.h>
00011 #include <math.h>
00012 #include "TData.h"
00013 
00014 #ifdef __cplusplus
00015 extern "C" {
00016 #endif
00017 
00018 /* 
00019    Este fichero tiene operaciones de transformacion de sistemas de referencia, 
00020    transformaciones de puntos entre sistemas, de paso de coordenadadas polares,
00021    a cartesianas y de corte de segmentos
00022 
00023 */
00024 
00025 /* --------------------------------------------------------------------------------------- */
00026 /* TRANSFORMACIONES DE PUNTO DE UN SISTEMA DE REFERENCIA A OTRO                            */
00027 /* --------------------------------------------------------------------------------------- */
00028 
00029 /* --------------------------------------------------------------------------------------- */
00030 /* transfor_directa_p                                                                      */ 
00031 /*  .... Hace la transformacion directa de un punto a un sistema a otro                    */ 
00032 /*  .... In: (x,y) las coordenadas del punto, sistema es el sistema de referencia          */
00033 /*  .... Out: en sol se devuelve las coordenadas del punto en el nuevo sistema             */
00034 
00035 void transfor_directa_p ( float x, float y, Tsc *sistema, Tpf *sol );
00036 
00037 /* --------------------------------------------------------------------------------------- */
00038 /* transfor_directa_p                                                                      */ 
00039 /*  .... Hace la transformacion directa de un punto a un sistema a otro                    */ 
00040 /*  .... La diferencia es que aqui el punto de entrada es el (0,0) (optimiza la anterior)  */
00041 /*  .... In: (x,y) las coordenadas del punto, sistema es el sistema de referencia          */
00042 /*  .... Out: en sol se devuelve las coordenadas del punto en el nuevo sistema             */
00043 
00044 void transfor_directa_pt0(float x, float y, 
00045                           Tsc *sistema, Tpf *sol);
00046   
00047 /* --------------------------------------------------------------------------------------- */
00048 /* transfor_inversa_p                                                                      */ 
00049 /*  .... Hace la transformacion inversa de un punto a un sistema a otro                    */ 
00050 /*  .... In: (x,y) las coordenadas del punto, sistema es el sistema de referencia          */
00051 /*  .... Out: en sol se devuelve las coordenadas del punto en el nuevo sistema             */
00052 
00053 void transfor_inversa_p ( float x, float y, Tsc *sistema, Tpf *sol );
00054 
00055 /* --------------------------------------------------------------------------------------- */
00056 /* TRANSFORMACIONES DE COMPOSICION E INVERSION DE SISTEMAS DE REFERENCIA                   */
00057 /* --------------------------------------------------------------------------------------- */
00058 
00059 /* --------------------------------------------------------------------------------------- */
00060 /* composicion_sis                                                                         */ 
00061 /*  .... Realiza la composicion de sistemas de referencia en otro sistema                  */ 
00062 /*  .... In: compone sis1 y sis2                                                           */
00063 /*  .... Out: la salida sisOut es el resultado de la composicion de los sistemas           */
00064 /*  .... Nota: resulta muy importante el orden de las entradas en la composicion           */
00065 
00066 void composicion_sis(Tsc *sis1,Tsc *sis2,Tsc *sisOut);
00067 
00068 /* --------------------------------------------------------------------------------------- */
00069 /* inversion_sis                                                                           */ 
00070 /*  .... Realiza la inversion de un sistema de referencia                                  */ 
00071 /*  .... In: sisIn es el sistema a invertir                                                */
00072 /*  .... Out: sisOut es el sistema invertido                                               */
00073 
00074 void inversion_sis(Tsc *sisIn, Tsc *sisOut);
00075 
00076 /* --------------------------------------------------------------------------------------- */
00077 /* TRANSFORMACIONES DE PUNTO DE UN SISTEMA DE REFERENCIA A OTRO                            */
00078 /* --------------------------------------------------------------------------------------- */
00079 
00080 /* --------------------------------------------------------------------------------------- */
00081 /* car2pol                                                                                 */ 
00082 /*  .... Transforma un punto de coordenadas cartesianas a polares                          */ 
00083 /*  .... In: el punto en coordenadas cartesianas a transformar                             */
00084 /*  .... Out: el punto salida en coordenadas polares                                       */
00085 
00086 void car2pol(Tpf *in, Tpfp *out);
00087 
00088 /* --------------------------------------------------------------------------------------- */
00089 /* pol2car                                                                                 */ 
00090 /*  .... Transforma un punto de coordenadas polares a cartesianas                          */ 
00091 /*  .... In: el punto entrada en coordenadas polares a transformar                         */
00092 /*  .... Out: el punto en coordenadas cartesianas transformado                             */
00093 
00094 void pol2car(Tpfp *in, Tpf *out);
00095 
00096 /* --------------------------------------------------------------------------------------- */
00097 /* TRANSFORMACIONES DE PUNTO DE UN SISTEMA DE REFERENCIA A OTRO                            */
00098 /* --------------------------------------------------------------------------------------- */
00099 
00100 /* --------------------------------------------------------------------------------------- */
00101 /* corte_segmentos                                                                         */ 
00102 /*  .... Calcula el punto de corte entre dos segmentos                                     */ 
00103 /*  .... In: las coordenadas de los puntos extremos (x1,y1)-(x2,y2) y (x3,y3)-(x4,y4)      */
00104 /*  .... Out: sol son las coordenadas del punto de corte. return --> 1 si hay corte. -->0 no */
00105 
00106 int corte_segmentos ( float x1, float y1, float x2, float y2, 
00107                       float x3, float y3, float x4, float y4,
00108                       Tpf *sol );
00109 
00110 
00111 /* Normaliza el angulo entre [-PI, PI] */
00112 float NormalizarPI(float ang);
00113 
00114 #ifdef __cplusplus
00115 }
00116 #endif
00117 
00118 #endif 


csm_ros
Author(s): Gaƫl Ecorchard , Ivan Dryanovski, William Morris, Andrea Censi
autogenerated on Sat Jun 8 2019 19:52:42