/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/
/* [ Created with wxMaxima version 0.8.2 ] */

/* [wxMaxima: input   start ] */
rx: matrix(
 [1,0,0], 
 [0,cos(x),-sin(x)], 
 [0,sin(x),cos(x)]
);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
ry: matrix(
 [cos(y),0,sin(y)], 
 [0,1,0], 
 [-sin(y),0,cos(y)]
);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
rz: matrix(
 [cos(z),-sin(z),0], 
 [sin(z),cos(z),0], 
 [0,0,1]
);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
r: rz.rx.ry;
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
p : matrix([px], [py], [pz]);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
sm : matrix([scx, 0, 0], [0, scy, 0], [0, 0, scz]);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
sk : matrix([1, sk1, sk2], [0, 1, sk3], [0,0,1]);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
a : r.sm.sk;
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
diff(a.p, x, 1);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
diff(a.p, y, 1);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
diff(a.p, z, 1);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
diff(a.p, scx, 1);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
diff(a.p, scy, 1);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
diff(a.p, scz, 1);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
diff(a.p, sk1, 1);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
diff(a.p, sk2, 1);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
diff(a.p, sk3, 1);
/* [wxMaxima: input   end   ] */

/* [wxMaxima: comment start ]
Code for generating values for CTest
   [wxMaxima: comment end   ] */

/* [wxMaxima: input   start ] */
float(at(a, [x=%pi/8, y=%pi/10, z=-%pi/6, scx=.8, scy=.9, scz=1.1, sk1=.05, sk2=-.1, sk3=.075]));
/* [wxMaxima: input   end   ] */

/* [wxMaxima: comment start ]
Jacobian matrix for rotation parameters
   [wxMaxima: comment end   ] */

/* [wxMaxima: input   start ] */
Jr : addcol(matrix(),diff(a.p, x,1), diff(a.p, y, 1), diff(a.p, z, 1));
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
float(at(Jr, [x=%pi/8, y=%pi/10, z=-%pi/6, scx=.8, scy=.9, scz=1.1, sk1=.05, sk2=-.1, sk3=.075, px=6, py=-3, pz=20]));
/* [wxMaxima: input   end   ] */

/* [wxMaxima: comment start ]
Jacobian matrix for axis scaling parameters (Translation not included because its usually just the identity)
   [wxMaxima: comment end   ] */

/* [wxMaxima: input   start ] */
Jsc : addcol(matrix(),diff(a.p, scx,1), diff(a.p, scy, 1), diff(a.p, scz, 1));
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
float(at(Jsc, [x=%pi/8, y=%pi/10, z=-%pi/6, scx=.8, scy=.9, scz=1.1, sk1=.05, sk2=-.1, sk3=.075, px=6, py=-3, pz=20]));
/* [wxMaxima: input   end   ] */

/* [wxMaxima: comment start ]
Jacobian matrix for skew parameters
   [wxMaxima: comment end   ] */

/* [wxMaxima: input   start ] */
Jsk : addcol(matrix(),diff(a.p, sk1,1), diff(a.p, sk2, 1), diff(a.p, sk3, 1));
/* [wxMaxima: input   end   ] */

/* [wxMaxima: input   start ] */
float(at(Jsk, [x=%pi/8, y=%pi/10, z=-%pi/6, scx=.8, scy=.9, scz=1.1, sk1=.05, sk2=-.1, sk3=.075, px=6, py=-3, pz=20]));
/* [wxMaxima: input   end   ] */

/* Maxima can't load/batch files which end with a comment! */
"Created with wxMaxima"$
