Ето ти една подсказка , не ти трябва сорс код ...
// 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
{{ x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // 0000
{ 0, x, -2, -1, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0}, // 0001
{ 0, 2, x, 1, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // 0010
{ 0, 1, -1, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // 0011
{ 0, 0, 2, 0, x, 0, 1, 0, -2, 0, 0, 0, -1, 0, 0, 0}, // 0100
{ 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // 0101
{ 0, 0, 1, 0, -1, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // 0110
{ 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0}, // 0111
{ 0, -2, 0, 0, 2, 0, 0, 0, x, -1, 0, 0, 1, 0, 0, 0}, // 1000
{ 0, -1, 0, 0, 0, 0, 0, 0, 1, x, 0, 0, 0, 0, 0, 0}, // 1001
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0}, // 1010
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0}, // 1011
{ 0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, x, 0, 0, 0}, // 1100
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0}, // 1101
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0}, // 1110
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x}}; // 1111
Знаеш текущото състояние на фазите и след промяна гледаш табличката с колко и къде се премества . Табличката поддържа 1,1/2,1/4 мод .
Ей го в действие ...
https://youtu.be/C1PprBT5grg