double getMaxDistanceAlongNormal( List<XYZ> pts, XYZ normal) { int i, j; int n = pts.Count; double dmax = 0; for( i = 0; i < n - 1; ++i ) { for( j = i + 1; j < n; ++j ) { XYZ v = pts[i].Subtract( pts[j] ); double d = v.DotProduct( normal ); if( d > dmax ) { dmax = d; } } } return dmax; }