Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Partition the Unit Sphere

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.

like image 773
anjruu Avatar asked Nov 01 '25 01:11

anjruu


1 Answers

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
like image 90
sds Avatar answered Nov 03 '25 15:11

sds



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!