46 #include <visp/vpMy.h>
47 #include <visp/vpArit.h>
48 #include <visp/vpTmstack.h>
52 #include <visp/vpConfig.h>
54 #ifndef DOXYGEN_SHOULD_SKIP_THIS
59 static Matrix stack[STACKSIZE];
60 static Matrix *sp = stack;
82 load_tmstack (Matrix m)
85 memmove ((
char *) *sp, (
char *) m,
sizeof (Matrix));
95 static char proc_name[] =
"pop_tmstack";
98 fprintf (stderr,
"%s: stack underflow\n", proc_name);
111 static char proc_name[] =
"push_tmstack";
113 if (sp == stack + STACKSIZE - 1) {
114 fprintf (stderr,
"%s: stack overflow\n", proc_name);
119 memmove ((
char *) sp, (
char *) (sp - 1),
sizeof (Matrix));
131 mp = (sp == stack) ? sp + 1 : sp - 1;
135 memmove ((
char *) tmp, (
char *) *sp,
sizeof (Matrix));
136 memmove ((
char *) *sp, (
char *) *mp,
sizeof (Matrix));
137 memmove ((
char *) *mp, (
char *) tmp,
sizeof (Matrix));
147 postmult_tmstack (Matrix m)
149 postmult_matrix (*sp, m);
159 postrotate_tmstack (Vector *vp)
163 Rotate_to_Matrix (vp, m);
164 postmult3_matrix (*sp, m);
174 postscale_tmstack (Vector *vp)
176 postscale_matrix (*sp, vp);
186 posttranslate_tmstack (Vector *vp)
188 posttrans_matrix (*sp, vp);
198 premult_tmstack (Matrix m)
200 premult_matrix (*sp, m);
210 prerotate_tmstack (Vector *vp)
214 Rotate_to_Matrix (vp, m);
215 premult3_matrix (*sp, m);
225 prescale_tmstack (Vector *vp)
227 prescale_matrix (*sp, vp);
237 pretranslate_tmstack (Vector *vp)
239 pretrans_matrix (*sp, vp);