Учитывая точки P [] и соответствующие точки Q [], мы хотим найти перевод T и вращение R, чтобы минимизировать
E = Sum{ <Q[i] - (R*P[i]+T)|Q[i] - (R*P[i]+T)>}
но это
E = Sum{ <Q[i] - R*P[i] - T | Q[i] - R*P[i] - T>}
и учитывая R, значение Т, которое минимизирует это, составляет
T = mean { Q[i] - R*P[i]} = Qbar - R*Pbar
где Qbar - среднее значение Qs и Pbar Ps.
Подключив это значение T, мы получим
E = Sum{ <q[i] - R*p[i] | q[i] - R*p[i]>}
where q[i] = Q[i]-Qbar, p[i] = P[i]-Pbar
Нахождение R для минимизации E - это проблема ортогональных прокруток . Когда это решено для R, мы можем вычислить T, как указано выше.
Модификации, когда требуется решение для взвешенного случая, просты. Прежде всего Pbar и Qbar должны быть средневзвешенными, а затем мы должны использовать
q[i] = sqrt( weight[i]) * ( Q[i]-Qbar)
p[i] = sqrt( weight[i]) * ( P[i]-Pbar)