-
Mark OLESEN authored
- for most field types this is a no-op, but for a field of floatVector or doubleVector (eg, vector and solveVector) it will normalise each element with divide-by-zero protection. More reliable and efficient than dividing a field by the mag of itself (even with VSMALL protection). Applied to FieldField and GeometricField as well. Eg, fld.normalise(); vs. fld /= mag(fld) + VSMALL; ENH: support optional tolerance for vector::normalise - for cases where tolerances larger than ROOTVSMALL are preferable. Not currently available for the field method (a templating question). ENH: vector::removeCollinear method - when working with geometries it is frequently necessary to have a normal vector without any collinear components. The removeCollinear method provides for clearer, compacter code. Eg, vector edgeNorm = ...; const vector edgeDirn = e.unitVec(points()); edgeNorm.removeCollinear(edgeDirn); edgeNorm.normalise(); vs. vector edgeNorm = ...; const vector edgeDirn = e.unitVec(points()); edgeNorm -= edgeDirn*(edgeDirn & edgeNorm); edgeNorm /= mag(edgeNorm);
8e6f2ca5