So the brute works.. However, there's some issue with the Fast. Mainly, it misses some pairs (especially after I "fixed" sortPointByRelativeAngle() method to "optimize", by passing index and run through only those points that has index larger than the current point being compared). Gotta fix this method, or maybe build up from the start again.