Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the fastest way to find the closest point to a given point?

What is the fastest way to find closest point to the given point in data array?

For example, suppose I have an array A of 3D points (with coordinates x, y and z, as usual) and point (x_p, y_p, z_p). How do I find the closest point in A to (x_p, y_p, z_p)?

As far as I know, slowest way to do it is to use linear search. Are there any better solutions?

Addition of any an auxiliary data structure is possible.

like image 200
qutron Avatar asked Dec 03 '10 21:12

qutron


People also ask

How can I find closest point on a polygon from a point?

The basic algorithm is to check every segment of the polygon and find the closest point for it. This will either be the perpedicular point (if it is on the segment) or one of the endpoints. After doing this for all segments, pick the point with the smallest total difference.

In which of the following method two points which are nearest to each other are considered and thus the shortest distance is used?

Closest Pair of Points using Divide and Conquer algorithm.


1 Answers

You may organize your points in an Octree. Then you only need to search a small subset.

A Octree is a fairly simple data structure you can implement yourself (which would be a valuable learning experience), or you may find some helpful libraries to get you going.

like image 78
dkamins Avatar answered Oct 03 '22 05:10

dkamins