LinearFunction HTWKMath::LinearRegression(std::vector<Point2f> values) { tFloat32 x_sum = 0; tFloat32 y_sum = 0; for (unsigned int i = 0; i < values.size(); ++i) { x_sum += values.at(i).x; y_sum += values.at(i).y; } x_sum = x_sum / values.size(); y_sum = y_sum / values.size(); tFloat32 xy_star_sum = 0; tFloat32 x_star_sum = 0; for (unsigned int i = 0; i < values.size(); ++i) { xy_star_sum += (values.at(i).x - x_sum) * (values.at(i).y - y_sum); x_star_sum += pow((values.at(i).x - x_sum), 2); } tFloat32 a = xy_star_sum / x_star_sum; tFloat32 m = y_sum - (a * x_sum); return LinearFunction(a, m); }
LinearFunction GlueFunction::make_fix_unconstrained(const GnomonBsplineCoords& c) { return LinearFunction( -1.0 / c.shift_x, -1.0 / c.shift_y, 0.75 + c.x_mid / c.shift_x + c.y_mid / c.shift_y ); }