tangent points and intersection algorithms

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

tangent points and intersection algorithms

ravas
LibreCAD fails to find many tangent points.
It will also usually find two intersections instead of a tangent point,
when the precision is more than 6 digits.

https://github.com/LibreCAD/LibreCAD/issues/523
https://github.com/LibreCAD/LibreCAD/issues/788

I waited a year with the hope that dxli could solve these issues;
he did solve 788 somehow by using the eigen lib;
however, I don't think we need to add a dependency to solve these problems;
and I'm not willing to pull in all the changes he made without understanding them.

788 will probably be solved simply by replacing the current generic "quadratic" approach
with dedicated line-circle and circle-circle intersection algorithms.
Vasilis has offered to do the work next month,
which gives anyone interested some time to debug and salvage the current approach.

If anyone can understand dxli's work and is willing to merge it,
and will be around for a while to deal with bugs...
then I wouldn't be opposed to that.
https://github.com/dxli/LibreCAD/commits/quadratic

If we can get this fixed, then I can use LibreCAD,
and I will be motivated to work on adding more features.
Reply | Threaded
Open this post in threaded view
|

Re: tangent points and intersection algorithms

R. van Twisk
Administrator
Ravas,

is it possible to test that code and see if the intersections work in your case?

I am not very clear what this exactly get solved with the patches.

My math is very limited and I don't understand it to get better precision and to understand the implications.
For what I see it sounds like precise enough for CAD work in the area where LibreCAD is active (not medical equipment and anything object you can walk around).
Reply | Threaded
Open this post in threaded view
|

Re: tangent points and intersection algorithms

ravas
Yes, I tested it;
and it is an improvement.

The question is: what does adding Eigen accomplish?
I'm 99% sure we don't need anything other than the standard math lib
(and for readability a point/vector class).