Exactly how this is implemented would depend on roughly how many points there are in your collection, and also the speed that your dynamic point is moving. There may also require some level of trial and error to find the best performing configuration.

Generally, You could split the entire 3D scene up into a group of 'boxes'. The boxes should be modelled within some sort of 'Box' class; which either stores all of the sub-points in an array, or stores the first point within that box, which then references the next point, which then references the point after that, and so on (..nodes).

When you need to find the closest point to your dynamic point, you find which box it is in, then find the closest point within that box, to your dynamic point.

One way to do this, would be using a customized quick-sort.

You could also have each box consist of other boxes (sub-boxes). These boxes would then either contain more the points within that region, or even more sub-boxes!

But this part is dependent on things like how many points there are, how well they're distributed, et al.