Inspired by this StackOverflow question: https://stackoverflow.com/questions/63346135
(it was not clearly presented, and got closed)
Let’s say I wanted to enumerate all the 3D points on the integer lattice, within a sphere, in order of the angle between the vector to the point and the up vector (say z).
Could I do this in O(1) space efficiently?
All I can find is:
Remembering last point (init at (0,0,0)). (O(1) memory) while true init best dot product to 0 going through all 3D points (three nested for's with radius range) if this point has better dot product but least than last point keep this point as best if best dot product is still 0, exit pick best point as current point (this is where the listing occurs) update last point to best point
Not only is this absolutely slow, it also needs the use of integer math for dot product and length so that numerical precision doesn’t mess with symmetrical points and it would also need a tweak to guarantee symmetrical points are listed in a known order.
Is there any good algorithms that would apply here?