cartesian2d.h
Go to the documentation of this file.
00001 // Copyright (c) 2010-2016 The YP-Spur Authors, except where otherwise indicated.
00002 //
00003 // Permission is hereby granted, free of charge, to any person obtaining a copy
00004 // of this software and associated documentation files (the "Software"), to
00005 // deal in the Software without restriction, including without limitation the
00006 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
00007 // sell copies of the Software, and to permit persons to whom the Software is
00008 // furnished to do so, subject to the following conditions:
00009 //
00010 // The above copyright notice and this permission notice shall be included in
00011 // all copies or substantial portions of the Software.
00012 //
00013 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00014 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00015 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
00016 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00017 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00018 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
00019 // SOFTWARE.
00020 
00021 #ifndef __AUXLIB_CARTESIAN2D_H
00022 #define __AUXLIB_CARTESIAN2D_H
00023 
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif  // __cplusplus
00027 
00028 #include <unistd.h>
00029 #include <stdio.h>
00030 #include <stdlib.h>
00031 #include <math.h>
00032 
00033 typedef struct cs_t *CSptr;
00034 typedef struct cs_t
00035 {
00036   double x;
00037   double y;
00038   double theta;
00039   CSptr parent;
00040   CSptr child;
00041   CSptr brother;
00042   int level;
00043 } CoordinateSystem;
00044 
00045 CSptr CS_add(CSptr parent_cs, double x, double y, double theta);
00046 int CS_delete(CSptr target_cs);
00047 int CS_set(CSptr target_cs, double x, double y, double theta);
00048 int CS_set_on_CS(CSptr target_cs, CSptr on_cs, double x, double y, double theta);
00049 void CS_turn_base(double *x, double *y, double *theta);
00050 
00051 void CS_recursive_trans(CSptr target_cs, CSptr now_cs, double *x, double *y, double *theta);
00052 void inv_trans_cs(CSptr target_cs, double *x, double *y, double *theta);
00053 void trans_cs(CSptr target_cs, double *x, double *y, double *theta);
00054 void trace_trans_cs(CSptr target_cs, double *x, double *y, double *theta);
00055 
00056 #ifdef __cplusplus
00057 }
00058 #endif  // __cplusplus
00059 #endif  // __AUXLIB_CARTESIAN2D_H


yp-spur
Author(s):
autogenerated on Fri May 10 2019 02:52:19