I am working on a program that involves finding the tangent lines between 2 ellipses, and the intersection points. I am using the vgl and vnl libraries to do these calculations, but occasionally they fail due to floating point “inexactness.” Some of the checks for equality fail because 1e-300 != 0 (or something similar, where the difference between the two sides is really small). I could not figure out a search term to figure out if this problem had been brought up before in the forums, or the mailing list, so I’m wondering if it has been brought up before, and if so, if it has been addressed.
One thing I have tried to do is to create another class (called mydpfp) which emulates a double, but uses abs(A-B) < 1e-4 to see if A and B are equal, and I’m having trouble getting it to compile:
/home/owensn/src/vxl-1.1.0/core/vgl/vgl_conic.txx: In constructor `vgl_conic<T>::vgl_conic(const vgl_homg_point_2d<Type>&, T, T, T) [with T = mydpfp]':
t2.cc:16: instantiated from here
/home/owensn/src/vxl-1.1.0/core/vgl/vgl_conic.txx:119: error: operands to ?: have different types
/home/owensn/src/vxl-1.1.0/core/vgl/vgl_conic.txx:120: error: operands to ?: have different types
Any help with either problem would be great.
Also, I just realized that 1.2 is available, I’m going to try that while I wait (patiently :^) for an answer.