#include "newfit.h"
// вычисление модуля расстояния между двумя точками, с учётом геометрического преобразования
+//
+// Казалось бы лучше связанные тройки векторами... =) это и к тому что ниже относится
double F (double aix, double aiy, double aiz, double bix_plus_x, double biy_plus_y, double biz_plus_z, double A, double B, double C) {
return sqrt( pow(aix + biy_plus_y * (cos(A) * sin(C) - cos(C) * sin(A) * sin(B)) - biz_plus_z * (sin(A) * sin(C) + cos(A) * cos(C) * sin(B)) - cos(B) * cos(C) * bix_plus_x, 2) +
pow(aiy - biy_plus_y * (cos(A) * cos(C) + sin(A) * sin(B) * sin(C)) + biz_plus_z * (cos(C) * sin(A) - cos(A) * sin(B) * sin(C)) - cos(B) * sin(C) * bix_plus_x, 2) +
}
// применения геометрического преобразования: смещение на вектор (x, y, z) и повороты на градусы A, B, C относительно осей (x, y, z)
+//
+// А порядок поворотов какой?
void ApplyFit (std::vector< RVec > &b, double x, double y, double z, double A, double B, double C) {
double t0 = 0, t1 = 0, t2 = 0;
for (unsigned int i = 0; i < b.size(); i++) {
static_cast< double >(b[pairs[i].second][0]) + x, static_cast< double >(b[pairs[i].second][1]) + y, static_cast< double >(b[pairs[i].second][2]) + z, A, B, C);
}
if (FtCnst == 0) {
- FtCnst = 0.0000001;
+ FtCnst = 0.0000001; // почему именно столько?!
}
if (f1 == 0) {
ApplyFit(b, x, y, z, A, B, C);