calcul.h
/***************************************************/
/* Last Revised:
$Id: calcul.h 8465 2009-12-16 00:44:13Z gbiggs $
*/
/***************************************************/
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#ifndef Calcul
#define Calcul
#include <stdio.h>
#include <math.h>
#include "TData.h"
#ifdef __cplusplus
extern "C" {
#endif
/*
Este fichero tiene operaciones de transformacion de sistemas de referencia,
transformaciones de puntos entre sistemas, de paso de coordenadadas polares,
a cartesianas y de corte de segmentos
*/
/* --------------------------------------------------------------------------------------- */
/* TRANSFORMACIONES DE PUNTO DE UN SISTEMA DE REFERENCIA A OTRO */
/* --------------------------------------------------------------------------------------- */
/* --------------------------------------------------------------------------------------- */
/* transfor_directa_p */
/* .... Hace la transformacion directa de un punto a un sistema a otro */
/* .... In: (x,y) las coordenadas del punto, sistema es el sistema de referencia */
/* .... Out: en sol se devuelve las coordenadas del punto en el nuevo sistema */
void transfor_directa_p ( float x, float y, Tsc *sistema, Tpf *sol );
/* --------------------------------------------------------------------------------------- */
/* transfor_directa_p */
/* .... Hace la transformacion directa de un punto a un sistema a otro */
/* .... La diferencia es que aqui el punto de entrada es el (0,0) (optimiza la anterior) */
/* .... In: (x,y) las coordenadas del punto, sistema es el sistema de referencia */
/* .... Out: en sol se devuelve las coordenadas del punto en el nuevo sistema */
void transfor_directa_pt0(float x, float y,
Tsc *sistema, Tpf *sol);
/* --------------------------------------------------------------------------------------- */
/* transfor_inversa_p */
/* .... Hace la transformacion inversa de un punto a un sistema a otro */
/* .... In: (x,y) las coordenadas del punto, sistema es el sistema de referencia */
/* .... Out: en sol se devuelve las coordenadas del punto en el nuevo sistema */
void transfor_inversa_p ( float x, float y, Tsc *sistema, Tpf *sol );
/* --------------------------------------------------------------------------------------- */
/* TRANSFORMACIONES DE COMPOSICION E INVERSION DE SISTEMAS DE REFERENCIA */
/* --------------------------------------------------------------------------------------- */
/* --------------------------------------------------------------------------------------- */
/* composicion_sis */
/* .... Realiza la composicion de sistemas de referencia en otro sistema */
/* .... In: compone sis1 y sis2 */
/* .... Out: la salida sisOut es el resultado de la composicion de los sistemas */
/* .... Nota: resulta muy importante el orden de las entradas en la composicion */
void composicion_sis(Tsc *sis1,Tsc *sis2,Tsc *sisOut);
/* --------------------------------------------------------------------------------------- */
/* inversion_sis */
/* .... Realiza la inversion de un sistema de referencia */
/* .... In: sisIn es el sistema a invertir */
/* .... Out: sisOut es el sistema invertido */
void inversion_sis(Tsc *sisIn, Tsc *sisOut);
/* --------------------------------------------------------------------------------------- */
/* TRANSFORMACIONES DE PUNTO DE UN SISTEMA DE REFERENCIA A OTRO */
/* --------------------------------------------------------------------------------------- */
/* --------------------------------------------------------------------------------------- */
/* car2pol */
/* .... Transforma un punto de coordenadas cartesianas a polares */
/* .... In: el punto en coordenadas cartesianas a transformar */
/* .... Out: el punto salida en coordenadas polares */
void car2pol(Tpf *in, Tpfp *out);
/* --------------------------------------------------------------------------------------- */
/* pol2car */
/* .... Transforma un punto de coordenadas polares a cartesianas */
/* .... In: el punto entrada en coordenadas polares a transformar */
/* .... Out: el punto en coordenadas cartesianas transformado */
void pol2car(Tpfp *in, Tpf *out);
/* --------------------------------------------------------------------------------------- */
/* TRANSFORMACIONES DE PUNTO DE UN SISTEMA DE REFERENCIA A OTRO */
/* --------------------------------------------------------------------------------------- */
/* --------------------------------------------------------------------------------------- */
/* corte_segmentos */
/* .... Calcula el punto de corte entre dos segmentos */
/* .... In: las coordenadas de los puntos extremos (x1,y1)-(x2,y2) y (x3,y3)-(x4,y4) */
/* .... Out: sol son las coordenadas del punto de corte. return --> 1 si hay corte. -->0 no */
int corte_segmentos ( float x1, float y1, float x2, float y2,
float x3, float y3, float x4, float y4,
Tpf *sol );
/* Normaliza el angulo entre [-PI, PI] */
float NormalizarPI(float ang);
#ifdef __cplusplus
}
#endif
#endif
Tpf
Definition: TData.h:41
Tsc
Definition: TData.h:57
Tpfp
Definition: TData.h:47

Last updated 12 September 2005 21:38:45