{
// Compute a normalized vector halfway between the two endpoints
double half[3];
- double len = 0;
+ double a1_len = 0;
+ double h_len = 0;
for(unsigned i=0; i<3; ++i)
{
half[i] = (axis1[i]+axis2[i])/2;
- len += half[i]*half[i];
+ a1_len += axis1[i]*axis1[i];
+ h_len += half[i]*half[i];
}
- len = sqrt(len);
- for(unsigned i=0; i<3; ++i)
- half[i] /= len;
// Compute correction factors for smooth interpolation
- double cos_half = axis1[0]*half[0]+axis1[1]*half[1]+axis1[2]*half[2];
+ double cos_half = (axis1[0]*half[0]+axis1[1]*half[1]+axis1[2]*half[2])/sqrt(a1_len*h_len);
double angle = acos(cos_half);
slope = (angle ? angle/tan(angle) : 1);
scale = cos_half;