--*********************************************************************************************--
-- Дано:
-- 1:  начальный вектор
>> v = [-1; 3; 1; 1];

-- 2: Три связанные кости a->b->c, где а - корневая кость, с - конечная дочерняя кость

-- 3: Ao, Bo, Co - начальные состояния/матрицы трансформаций в пространстве соответсвующих костей;

-- 4: A, B, C - конечные состояния/матрицы трансформаций в пространстве соответсвующих костей;  

-- 5: w0, w1, w2 - коэфициенты привязки/влияния трансформаций каждой кости, т.е. w0 - коэфициент влияния кости 'a', w1 - 'b', w2 - 'c' 


-- нижнее 'o' означает 'original' - начальное состояние матриц трансформаций костей

-- корневая кость
>> Ao = [1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1]
Ao =

   1   0   0   0
   0   1   0   0
   0   0   1   0
   0   0   0   1

-- Bo - дочерняя кость кости Ao
>> Bo = [1 0 0 0; 0 1 0 1; 0 0 1 0; 0 0 0 1]
Bo =

   1   0   0   0
   0   1   0   1
   0   0   1   0
   0   0   0   1

-- Co - дочерняя кость кости Bo
>> Co = [1 0 0 0; 0 1 0 1; 0 0 1 0; 0 0 0 1]
Co =

   1   0   0   0
   0   1   0   1
   0   0   1   0
   0   0   0   1
   
-- Следующие трансформации костей
>> A = [0.8704007 -0.4923441 0 0; 0.4923441 0.8660254 0 0; 0 0 1 0; 0 0 0 1]
 
A =

   0.87040  -0.49234   0.00000   0.00000
   0.49234   0.86603   0.00000   0.00000
   0.00000   0.00000   1.00000   0.00000
   0.00000   0.00000   0.00000   1.00000

>> B = [0 -1 0 0; 1 0 0 1; 0 0 1 0; 0 0 0 1]
B =

   0  -1   0   0
   1   0   0   1
   0   0   1   0
   0   0   0   1
   
>> C = [1 0 0 0; 0 1 0 1; 0 0 1 0; 0 0 0 1]
С =

   1   0   0   0
   0   1   0   1
   0   0   1   0
   0   0   0   1
   
>> w0 = 0.093; w1 = 0.076; w2 = 0.831;

-- найти значение вектора v в конечном состоянии матриц
   
--*********************************************************************************************--

--Решение:

>> ABCo = Ao*Bo*Co
ABCo =

   1   0   0   0
   0   1   0   2
   0   0   1   0
   0   0   0   1

>> ABCoInv = inv(ABCo)
ABCoInv =

   1  -0  -0  -0
   0   1  -0  -2
   0   0   1  -0
   0   0   0   1

>> ABoInv = inv(Ao*Bo)
ABoInv =

   1  -0  -0  -0
   0   1  -0  -1
   0   0   1  -0
   0   0   0   1



>> AB = A*B
AB =

  -0.49234  -0.87040   0.00000  -0.49234
   0.86603  -0.49234   0.00000   0.86603
   0.00000   0.00000   1.00000   0.00000
   0.00000   0.00000   0.00000   1.00000

>> ABC = AB*C
ABC =

  -0.49234  -0.87040   0.00000  -1.36274
   0.86603  -0.49234   0.00000   0.37368
   0.00000   0.00000   1.00000   0.00000
   0.00000   0.00000   0.00000   1.00000

>> TransA = A;
>> TransB = AB*ABoInv
TransB =

  -0.49234  -0.87040   0.00000   0.37806
   0.86603  -0.49234   0.00000   1.35837
   0.00000   0.00000   1.00000   0.00000
   0.00000   0.00000   0.00000   1.00000

>> TransC = ABC*ABCoInv
TransC =

  -0.49234  -0.87040   0.00000   0.37806
   0.86603  -0.49234   0.00000   1.35837
   0.00000   0.00000   1.00000   0.00000
   0.00000   0.00000   0.00000   1.00000

>> TransAv = TransA*v*w0
TransAv =

  -0.218311
   0.195833
   0.093000
   0.093000

>> TransBv = TransB*v*w1
TransBv =

  -0.132301
  -0.074836
   0.076000
   0.076000

>> TransCv = TransC*v*w2
TransCv =

  -1.44661
  -0.81828
   0.83100
   0.83100

>> Result = TransAv+TransBv+TransCv
Result =

  -1.79722
  -0.69728
   1.00000
   1.00000

>>