47#include <visp3/core/vpConfig.h>
49#ifndef DOXYGEN_SHOULD_SKIP_THIS
53static Matrix stack[STACKSIZE] ;
54static Matrix *sp = stack;
62Matrix *get_tmstack(
void) {
return (sp); }
70void load_tmstack(Matrix m)
73 memmove((
char *)*sp, (
char *)m,
sizeof(Matrix));
83 static char proc_name[] =
"pop_tmstack";
84 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); }