34 #ifndef GVF_PARAMETRIC_3D_LISSAJOUS_KX
35 #define GVF_PARAMETRIC_3D_LISSAJOUS_KX 0.001
39 #ifndef GVF_PARAMETRIC_3D_LISSAJOUS_KY
40 #define GVF_PARAMETRIC_3D_LISSAJOUS_KY 0.001
44 #ifndef GVF_PARAMETRIC_3D_LISSAJOUS_KZ
45 #define GVF_PARAMETRIC_3D_LISSAJOUS_KZ 0.001
49 #ifndef GVF_PARAMETRIC_3D_LISSAJOUS_CX
50 #define GVF_PARAMETRIC_3D_LISSAJOUS_CX 80
54 #ifndef GVF_PARAMETRIC_3D_LISSAJOUS_CY
55 #define GVF_PARAMETRIC_3D_LISSAJOUS_CY 80
59 #ifndef GVF_PARAMETRIC_3D_LISSAJOUS_CZ
60 #define GVF_PARAMETRIC_3D_LISSAJOUS_CZ 10
64 #ifndef GVF_PARAMETRIC_3D_LISSAJOUS_WX
65 #define GVF_PARAMETRIC_3D_LISSAJOUS_WX 1
69 #ifndef GVF_PARAMETRIC_3D_LISSAJOUS_WY
70 #define GVF_PARAMETRIC_3D_LISSAJOUS_WY 1
74 #ifndef GVF_PARAMETRIC_3D_LISSAJOUS_WZ
75 #define GVF_PARAMETRIC_3D_LISSAJOUS_WZ 1
79 #ifndef GVF_PARAMETRIC_3D_LISSAJOUS_DX
80 #define GVF_PARAMETRIC_3D_LISSAJOUS_DX 0
84 #ifndef GVF_PARAMETRIC_3D_LISSAJOUS_DY
85 #define GVF_PARAMETRIC_3D_LISSAJOUS_DY 0
89 #ifndef GVF_PARAMETRIC_3D_LISSAJOUS_DZ
90 #define GVF_PARAMETRIC_3D_LISSAJOUS_DZ 0
94 #ifndef GVF_PARAMETRIC_3D_LISSAJOUS_ALPHA
95 #define GVF_PARAMETRIC_3D_LISSAJOUS_ALPHA 0
98 gvf_par_3d_lis_par gvf_parametric_3d_lissajous_par = {
GVF_PARAMETRIC_3D_LISSAJOUS_KX,
GVF_PARAMETRIC_3D_LISSAJOUS_KY,
GVF_PARAMETRIC_3D_LISSAJOUS_KZ,
GVF_PARAMETRIC_3D_LISSAJOUS_CX,
GVF_PARAMETRIC_3D_LISSAJOUS_CY,
GVF_PARAMETRIC_3D_LISSAJOUS_CZ,
GVF_PARAMETRIC_3D_LISSAJOUS_WX,
GVF_PARAMETRIC_3D_LISSAJOUS_WY,
GVF_PARAMETRIC_3D_LISSAJOUS_WZ,
GVF_PARAMETRIC_3D_LISSAJOUS_DX,
GVF_PARAMETRIC_3D_LISSAJOUS_DY,
GVF_PARAMETRIC_3D_LISSAJOUS_DZ,
GVF_PARAMETRIC_3D_LISSAJOUS_ALPHA};
101 float *f1dd,
float *f2dd,
float *f3dd)
122 float nrf1 = cx*cosf(wx*wb + deltax_rad);
123 float nrf2 = cy*cosf(wy*wb + deltay_rad);
125 *f1 = cosf(alpha_rad)*nrf1 - sinf(alpha_rad)*nrf2 + xo;
126 *f2 = sinf(alpha_rad)*nrf1 + cosf(alpha_rad)*nrf2 + yo;
127 *f3 = cz*cosf(wz*wb + deltaz_rad) + zo;
129 float nrf1d = -wx*cx*sinf(wx*wb + deltax_rad);
130 float nrf2d = -wy*cy*sinf(wy*wb + deltay_rad);
132 *f1d = cosf(alpha_rad)*nrf1d - sinf(alpha_rad)*nrf2d;
133 *f2d = sinf(alpha_rad)*nrf1d + cosf(alpha_rad)*nrf2d;
134 *f3d = -wz*cz*sinf(wz*wb + deltaz_rad);
136 float nrf1dd = -wx*wx*cx*cosf(wx*wb + deltax_rad);
137 float nrf2dd = -wy*wy*cy*cosf(wy*wb + deltay_rad);
139 *f1dd = cosf(alpha_rad)*nrf1dd - sinf(alpha_rad)*nrf2dd;
140 *f2dd = sinf(alpha_rad)*nrf1dd + cosf(alpha_rad)*nrf2dd;
141 *f3dd = -wz*wz*cz*cosf(wz*wb + deltaz_rad);
gvf_parametric_con gvf_parametric_control
gvf_parametric_tra gvf_parametric_trajectory
Guiding vector field algorithm for 2D and 3D parametric trajectories.
#define GVF_PARAMETRIC_3D_LISSAJOUS_CX
#define GVF_PARAMETRIC_3D_LISSAJOUS_ALPHA
gvf_par_3d_lis_par gvf_parametric_3d_lissajous_par
#define GVF_PARAMETRIC_3D_LISSAJOUS_KX
#define GVF_PARAMETRIC_3D_LISSAJOUS_WZ
void gvf_parametric_3d_lissajous_info(float *f1, float *f2, float *f3, float *f1d, float *f2d, float *f3d, float *f1dd, float *f2dd, float *f3dd)
#define GVF_PARAMETRIC_3D_LISSAJOUS_WY
#define GVF_PARAMETRIC_3D_LISSAJOUS_KY
#define GVF_PARAMETRIC_3D_LISSAJOUS_DX
#define GVF_PARAMETRIC_3D_LISSAJOUS_DZ
#define GVF_PARAMETRIC_3D_LISSAJOUS_CY
#define GVF_PARAMETRIC_3D_LISSAJOUS_CZ
#define GVF_PARAMETRIC_3D_LISSAJOUS_DY
#define GVF_PARAMETRIC_3D_LISSAJOUS_KZ
#define GVF_PARAMETRIC_3D_LISSAJOUS_WX
Guiding vector field algorithm for 2D and 3D complex trajectories.