19 if (t <= -1 || t >= 1)
25 return 0.5 * (1.0 + cos(t * M_PI));
33 a = (vec1_pull_seg - vec2_pull_seg) * M_PI;
34 b = vec2_pull_seg * M_PI;
39 for (
int i = 0; i <= 2; i++)
43 result = result + cos(b(i));
47 result = result + (sin(a(i) + b(i)) - sin(b(i))) / a(i);
52 if (fabs(a(0) - a(1)) <
epsilon)
54 result = result + cos(b(0) - b(1)) / 2.0;
58 result = result + (sin(b(0) - b(1) + a(0) - a(1)) - sin(b(0) - b(1))) / ((a(0) - a(1)) * 2.0);
61 if (fabs(a(0) + a(1)) <
epsilon)
63 result = result + cos(b(0) + b(1)) / 2.0;
67 result = result + (sin(b(0) + b(1) + a(0) + a(1)) - sin(b(0) + b(1))) / ((a(0) + a(1)) * 2.0);
71 if (fabs(a(0) - a(2)) <
epsilon)
73 result = result + cos(b(0) - b(2)) / 2.0;
77 result = result + (sin(b(0) - b(2) + a(0) - a(2)) - sin(b(0) - b(2))) / ((a(0) - a(2)) * 2.0);
80 if (fabs(a(0) + a(2)) <
epsilon)
82 result = result + cos(b(0) + b(2)) / 2.0;
86 result = result + (sin(b(0) + b(2) + a(0) + a(2)) - sin(b(0) + b(2))) / ((a(0) + a(2)) * 2.0);
90 if (fabs(a(1) - a(2)) <
epsilon)
92 result = result + cos(b(1) - b(2)) / 2.0;
96 result = result + (sin(b(1) - b(2) + a(1) - a(2)) - sin(b(1) - b(2))) / ((a(1) - a(2)) * 2.0);
99 if (fabs(a(1) + a(2)) <
epsilon)
101 result = result + cos(b(1) + b(2)) / 2.0;
105 result = result + (sin(b(1) + b(2) + a(1) + a(2)) - sin(b(1) + b(2))) / ((a(1) + a(2)) * 2.0);
109 if (fabs(a(0) - a(1) - a(2)) <
epsilon)
111 result = result + cos(b(0) - b(1) - b(2)) / 4.0;
115 result = result + (sin(b(0) - b(1) - b(2) + a(0) - a(1) - a(2)) - sin(b(0) - b(1) - b(2))) / ((a(0) - a(1) - a(2)) * 4.0);
118 if (fabs(a(0) + a(1) - a(2)) <
epsilon)
120 result = result + cos(b(0) + b(1) - b(2)) / 4.0;
124 result = result + (sin(b(0) + b(1) - b(2) + a(0) + a(1) - a(2)) - sin(b(0) + b(1) - b(2))) / ((a(0) + a(1) - a(2)) * 4.0);
127 if (fabs(a(0) - a(1) + a(2)) <
epsilon)
129 result = result + cos(b(0) - b(1) + b(2)) / 4.0;
133 result = result + (sin(b(0) - b(1) + b(2) + a(0) - a(1) + a(2)) - sin(b(0) - b(1) + b(2))) / ((a(0) - a(1) + a(2)) * 4.0);
136 if (fabs(a(0) + a(1) + a(2)) <
epsilon)
138 result = result + cos(b(0) + b(1) + b(2)) / 4.0;
142 result = result + (sin(b(0) + b(1) + b(2) + a(0) + a(1) + a(2)) - sin(b(0) + b(1) + b(2))) / ((a(0) + a(1) + a(2)) * 4.0);
double integrate(const Vector3d &vec1_pull_seg, const Vector3d &vec2_pull_seg) const
Eigen::Matrix< double, 1, DIM, Eigen::RowMajor > Vector3d
double operator()(const double &t) const