43 #include <visp3/robot/vpMy.h> 44 #include <visp3/robot/vpArit.h> 45 #include <visp3/robot/vpTmstack.h> 49 #include <visp3/core/vpConfig.h> 51 #ifndef DOXYGEN_SHOULD_SKIP_THIS 56 static Matrix stack[STACKSIZE];
57 static Matrix *sp = stack;
79 load_tmstack (Matrix m)
82 memmove ((
char *) *sp, (
char *) m,
sizeof (Matrix));
92 static char proc_name[] =
"pop_tmstack";
95 fprintf (stderr,
"%s: stack underflow\n", proc_name);
108 static char proc_name[] =
"push_tmstack";
110 if (sp == stack + STACKSIZE - 1) {
111 fprintf (stderr,
"%s: stack overflow\n", proc_name);
116 memmove ((
char *) sp, (
char *) (sp - 1),
sizeof (Matrix));
128 mp = (sp == stack) ? sp + 1 : sp - 1;
132 memmove ((
char *) tmp, (
char *) *sp,
sizeof (Matrix));
133 memmove ((
char *) *sp, (
char *) *mp,
sizeof (Matrix));
134 memmove ((
char *) *mp, (
char *) tmp,
sizeof (Matrix));
144 postmult_tmstack (Matrix m)
146 postmult_matrix (*sp, m);
156 postrotate_tmstack (Vector *vp)
160 Rotate_to_Matrix (vp, m);
161 postmult3_matrix (*sp, m);
171 postscale_tmstack (Vector *vp)
173 postscale_matrix (*sp, vp);
183 posttranslate_tmstack (Vector *vp)
185 posttrans_matrix (*sp, vp);
195 premult_tmstack (Matrix m)
197 premult_matrix (*sp, m);
207 prerotate_tmstack (Vector *vp)
211 Rotate_to_Matrix (vp, m);
212 premult3_matrix (*sp, m);
222 prescale_tmstack (Vector *vp)
224 prescale_matrix (*sp, vp);
234 pretranslate_tmstack (Vector *vp)
236 pretrans_matrix (*sp, vp);