4

I'd like to make a lookup table for unit vectors. Each unit vector would map to a bin in this table, and the bin would contain some information for a small set of vectors with similar directions.

I could easily represent a vector using ($\theta$, $\phi$, 1), and then chop the angle ranges into bins to make a 2D lookup table (so the first bin is theta in the range of 0 to $2*\pi / N$, where N is the number of bins I want for the theta direction). The trouble with this is that I think that some bins are going to represent larger areas on the surface of the unit sphere than others, and I would like to get regions of roughly the same size.

Am I wrong in thinking that evenly dividing the angle range would make some bins larger than others? If not, does anyone know a better way of making this lookup table?

I found some papers and presentations like this one, but I'm not going to lie, I don't understand it (I've heard of Lebesgue measure, but I'll be damned if I know what it means), and it doesn't look particularly promising anyway.

anjruu
  • 1,224
  • 10
  • 24
  • You are going to divide phi angle by number of bins as well? – Yevgeniy.Chernobrivets Jun 27 '14 at 18:33
  • Can you give some insight into what you might do with this lookup table? It might help us suggest useful solutions. – Codie CodeMonkey Jun 27 '14 at 19:16
  • @Yevgeniy.Chernobrivets Yeah, that was the plan. – anjruu Jun 27 '14 at 22:24
  • @CodieCodeMonkey There's a range of rotations that are acceptable for my algorithm to proceed on, and I'm trying to optimize the check whether or not a rotation is good. One way I'd like to try is to pre-compute this lookup table that hold whether or not each bin holds normals that are within range. A lookup is just mapping the X and Y vectors by the candidate rotation and checking that they are both "good" (there would have to be two lookup tables, one for X and one for Y). – anjruu Jun 27 '14 at 22:27
  • 1
    A unit sphere is homeomorphic to may simple polyhedra. Can you define a bin as being the set of vectors that intersect one of the faces of the polyhedra (where the polyhedron is centered at the center of your sphere)? You could start with a tetrahedron and subdivide as needed. – Codie CodeMonkey Jun 30 '14 at 05:14

1 Answers1

5

If you split the longitude into N equal size segments, then, to get equal area domains on the unit sphere, you will have to have "uneven" segments along the latitude dimension. The area of the spherical segment between two lines of constant latitude (parallels) only depends on the "height", i.e., the length of the projection of the segment to the vertical axis. This means that if you split the vertical axis into equal length parts, then you will be splitting the sphere in to equal area domains.

The bottom line is: the following N*M domains have equal areas:

  • 2*k*pi/N < longitute < 2*(k+1)pi/N, k=0...N-1
  • -1 + 2*j/M < sin(latitude) < -1 + 2*(j+1)/M, j=0...M-1
sds
  • 58,617
  • 29
  • 161
  • 278