std::vector< RVec > krnl;
};
-double Fx (double x0, double y0, double z0, double p1, double p2, double p3, std::vector< RVec > x) {
- double ret = 0;
+long double Fx (long double x0, long double y0, long double z0, long double p1, long double p2, long double p3, std::vector< RVec > x) {
+ long double ret = 0;
for (int i = 0; i < x.size(); i++) {
ret +=
- std::sqrt(pow (p2 * (x[i][2] - z0) - p3 * (x[i][1] - y0), 2) +
- pow (p3 * (x[i][0] - x0) - p1 * (x[i][2] - z0), 2) +
- pow (p1 * (x[i][1] - y0) - p2 * (x[i][0] - x0), 2)) /
- std::sqrt(p1 * p1 + p2 * p2 + p3 * p3);
+ std::sqrt ( pow (p2 * (x[i][2] - z0) - p3 * (x[i][1] - y0), 2) +
+ pow (p3 * (x[i][0] - x0) - p1 * (x[i][2] - z0), 2) +
+ pow (p1 * (x[i][1] - y0) - p2 * (x[i][0] - x0), 2)) /
+ std::sqrt (p1 * p1 + p2 * p2 + p3 * p3);
}
return ret;
}
-double fx0 (double x0, double y0, double z0, double p1, double p2, double p3, std::vector< RVec > x) {
- double ret = 0;
+long double fx0 (long double x0, long double y0, long double z0, long double p1, long double p2, long double p3, std::vector< RVec > x) {
+ long double ret = 0;
for (int i = 0; i < x.size(); i++) {
ret +=
(2 * p2 * (p2 * (x0 - x[i][0]) - p1 * (y0 - x[i][1])) + 2 * p3 * (p3 * (x0 - x[i][0]) - p1 * (z0 - x[i][2]))) /
return ret;
}
-double fy0 (double x0, double y0, double z0, double p1, double p2, double p3, std::vector< RVec > x) {
- double ret = 0;
+long double fy0 (long double x0, long double y0, long double z0, long double p1, long double p2, long double p3, std::vector< RVec > x) {
+ long double ret = 0;
for (int i = 0; i < x.size(); i++) {
ret +=
-(2 * p1 * (p2 * (x0 - x[i][0]) - p1 * (y0 - x[i][1])) - 2 * p3 * (p3 * (y0 - x[i][1]) - p2 * (z0 - x[i][2]))) /
return ret;
}
-double fz0 (double x0, double y0, double z0, double p1, double p2, double p3, std::vector< RVec > x) {
- double ret = 0;
+long double fz0 (long double x0, long double y0, long double z0, long double p1, long double p2, long double p3, std::vector< RVec > x) {
+ long double ret = 0;
for (int i = 0; i < x.size(); i++) {
ret +=
-(2 * p1 * (p3 * (x0 - x[i][0]) - p1 * (z0 - x[i][2])) + 2 * p2 * (p3 * (y0 - x[i][1]) - p2 * (z0 - x[i][2]))) /
return ret;
}
-double fp1 (double x0, double y0, double z0, double p1, double p2, double p3, std::vector< RVec > x) {
- double ret = 0;
+long double fp1 (long double x0, long double y0, long double z0, long double p1, long double p2, long double p3, std::vector< RVec > x) {
+ long double ret = 0;
for (int i = 0; i < x.size(); i++) {
ret +=
-(2 * (p2 * (x0 - x[i][0]) - p1 * (y0 - x[i][1])) * (y0 - x[i][1]) + 2 * (p3 * (x0 - x[i][0]) - p1 * (z0 - x[i][2])) * (z0 - x[i][2])) /
return ret;
}
-double fp2 (double x0, double y0, double z0, double p1, double p2, double p3, std::vector< RVec > x) {
- double ret = 0;
+long double fp2 (long double x0, long double y0, long double z0, long double p1, long double p2, long double p3, std::vector< RVec > x) {
+ long double ret = 0;
for (int i = 0; i < x.size(); i++) {
ret +=
(2 * (p2 * (x0 - x[i][0]) - p1 * (y0 - x[i][1])) * (x0 - x[i][0]) - 2 * (p3 * (y0 - x[i][1]) - p2 * (z0 - x[i][2])) * (z0 - x[i][2])) /
return ret;
}
-double fp3 (double x0, double y0, double z0, double p1, double p2, double p3, std::vector< RVec > x) {
- double ret = 0;
+long double fp3 (long double x0, long double y0, long double z0, long double p1, long double p2, long double p3, std::vector< RVec > x) {
+ long double ret = 0;
for (int i = 0; i < x.size(); i++) {
ret +=
(2 * (p3 * (x0 - x[i][0]) - p1 * (z0 - x[i][2])) * (x0 - x[i][0]) + 2 * (p3 * (y0 - x[i][1]) - p2 * (z0 - x[i][2])) * (y0 - x[i][1])) /
return ret;
}
-void linear_kernel_search (double &x0, double &y0, double &z0, double &p1, double &p2, double &p3, std::vector< RVec > x, double epsi) {
+void linear_kernel_search (long double &x0, long double &y0, long double &z0, long double &p1, long double &p2, long double &p3, std::vector< RVec > x, long double epsi) {
long double F = 1, FX = 0, FX0 = 0, FY0 = 0, FZ0 = 0, FP1 = 0, FP2 = 0, FP3 = 0;
long double L1, L2, L3, L4, L5, L6;
//int count = 0;
mid[2] /= sel.size();
rvec_sub(temp.back(), temp.front(), arrow);
- double t1, t2, t3, t4, t5, t6;
+ long double t1, t2, t3, t4, t5, t6;
t1 = mid[0];
t2 = mid[1];
t3 = mid[2];