45#include <visp3/core/vpConfig.h>
47#ifndef DOXYGEN_SHOULD_SKIP_THIS
52static Matrix stack[STACKSIZE] ;
53static Matrix *sp = stack;
61Matrix *get_tmstack(
void) {
return (sp); }
69void load_tmstack(Matrix m)
72 memmove((
char *)*sp, (
char *)m,
sizeof(Matrix));
82 static char proc_name[] =
"pop_tmstack";
83 fprintf(stderr,
"%s: stack underflow\n", proc_name);
94void push_tmstack(
void)
96 if (sp == stack + STACKSIZE - 1) {
97 static char proc_name[] =
"push_tmstack";
98 fprintf(stderr,
"%s: stack overflow\n", proc_name);
103 memmove((
char *)sp, (
char *)(sp - 1),
sizeof(Matrix));
110void swap_tmstack(
void)
114 mp = (sp == stack) ? sp + 1 : sp - 1;
118 memmove((
char *)tmp, (
char *)*sp,
sizeof(Matrix));
119 memmove((
char *)*sp, (
char *)*mp,
sizeof(Matrix));
120 memmove((
char *)*mp, (
char *)tmp,
sizeof(Matrix));
129void postmult_tmstack(Matrix m) { postmult_matrix(*sp, m); }
137void postrotate_tmstack(Vector *vp)
141 Rotate_to_Matrix(vp, m);
142 postmult3_matrix(*sp, m);
151void postscale_tmstack(Vector *vp) { postscale_matrix(*sp, vp); }
159void posttranslate_tmstack(Vector *vp) { posttrans_matrix(*sp, vp); }
167void premult_tmstack(Matrix m) { premult_matrix(*sp, m); }
175void prerotate_tmstack(Vector *vp)
179 Rotate_to_Matrix(vp, m);
180 premult3_matrix(*sp, m);
189void prescale_tmstack(Vector *vp) { prescale_matrix(*sp, vp); }
197void pretranslate_tmstack(Vector *vp) { pretrans_matrix(*sp, vp); }