Other places we call such methods "distance". I'm not sure we are entirely consistent everywhere on having get or not in non-member functions, but we should be. Personally, I prefer not having the "get" when it is not a member (since there is no where to get it from) but could go either way.
Notification of IMP commits wrote: > Author: ben@SALILAB.ORG > Date: 2008-12-22 13:29:36 -0800 (Mon, 22 Dec 2008) > New Revision: 1073 > > Modified: > trunk/kernel/include/VectorD.h > trunk/kernel/pyext/Vector3D.i > trunk/kernel/test/misc/test_vector3d.py > Log: > Patch from Dina, with minor cleanup and additions by me: add methods to > calculate distance and squared distance between two "pointlike" vectors. > > > Modified: trunk/kernel/include/VectorD.h > =================================================================== > --- trunk/kernel/include/VectorD.h 2008-12-22 21:08:32 UTC (rev 1072) > +++ trunk/kernel/include/VectorD.h 2008-12-22 21:29:36 UTC (rev 1073) > @@ -339,7 +339,24 @@ > } > > > +//! compute the squared distance between two vectors > template <unsigned int D> > +Float get_squared_distance(const VectorD<D> &v1, const VectorD<D> &v2) { > + Float d, s = 0; > + for (unsigned int i=0; i< D; ++i) { > + d = v1[i] - v2[i]; > + s += d*d; > + } > + return s; > +} > + > +//! compute the distance between two vectors > +template <unsigned int D> > +Float get_distance(const VectorD<D> &v1, const VectorD<D> &v2) { > + return std::sqrt(get_squared_distance(v1, v2)); > +} > + > +template <unsigned int D> > struct SpacesIO > { > const VectorD<D> &v_; > > Modified: trunk/kernel/pyext/Vector3D.i > =================================================================== > --- trunk/kernel/pyext/Vector3D.i 2008-12-22 21:08:32 UTC (rev 1072) > +++ trunk/kernel/pyext/Vector3D.i 2008-12-22 21:29:36 UTC (rev 1073) > @@ -56,4 +56,6 @@ > %template(random_vector_on_unit_sphere) random_vector_on_unit_sphere<3>; > %template(random_vector_in_unit_sphere) random_vector_in_unit_sphere<3>; > %template(random_vector_in_unit_box) random_vector_in_unit_box<3>; > -} > \ No newline at end of file > + %template(get_distance) get_distance<3>; > + %template(get_squared_distance) get_squared_distance<3>; > +} > > Modified: trunk/kernel/test/misc/test_vector3d.py > =================================================================== > --- trunk/kernel/test/misc/test_vector3d.py 2008-12-22 21:08:32 UTC (rev 1072) > +++ trunk/kernel/test/misc/test_vector3d.py 2008-12-22 21:29:36 UTC (rev 1073) > @@ -100,6 +100,14 @@ > for i in range(3): > self.assertEqual(prod[i], expected_prod[i]) > self.assertEqual(v1[i], expected_prod[i]) > + > + def test_distance(self): > + """Check distance between two vectors""" > + v1 = IMP.Vector3D(3.0, 6.0, 9.0) > + v2 = IMP.Vector3D(1.0, 2.0, 3.0) > + self.assertEqual(IMP.get_squared_distance(v1, v2), 56) > + self.assertInTolerance(IMP.get_distance(v1, v2), 7.4833, 0.01) > + > def test_generators(self): > """Check the Vector3D generators""" > # test calling since it is a bit non-trivial in SWIG > > _______________________________________________ > IMP-commits mailing list > IMP-commits@salilab.org > https://salilab.org/mailman/listinfo/imp-commits >