reduce a complete vector



I've
 A:matrix([cos(tB)*(cos(tC)*SIN(tD)+sin(tC)*cos(tD))],
 [r*sin(tB)*cos(tC)*(cos(tC)*cos(tD)-sin(tC)*sin(tD))
 +sin(tB)*(-r*sin(tC)-dA)*(cos(tC)*sin(tD)+sin(tC)*COS(tD

and I need get

B:matrix([cos(tB)*sin(tD + tC)],[r*sin(tB)*cos(tD+2*tC) -
dA*sin(tB)*sin(tD+tC)]);


I try:

fixup(x) :=trigreduce(factorout(ratexpand(trigexpand(x)),sin,cos));
then
map(fixup,A);

but the result is not so simple...it's:


	     SIN(tD + tC + tB)	 SIN(tD + tC - tB)
(D8) MATRIX([----------------- + -----------------],
		     2			 2

 r SIN(tD + 2 tC + tB)	 r SIN(tD - 2 tC + tB)
 --------------------- + ---------------------
	   2			   2		 r SIN(tD + 2 tC + tB)
[--------------------------------------------- + ---------------------
		       2				   4

   r SIN(tD + 2 tC - tB)   r SIN(tD - 2 tC - tB)
   --------------------- + ---------------------
	     2			     2		   r SIN(tD + 2 tC - tB)
 - --------------------------------------------- - ---------------------
			 2				     4

   dA COS(tD + tC + tB)	  dA COS(tD + tC - tB)	 r SIN(tD - 2 tC + tB)
 + -------------------- - -------------------- - ---------------------
	    2			   2			   4

   r SIN(tD - 2 tC - tB)
 + ---------------------])
	     4

is not so simple...