将 n 个点均匀地分散在球面上 [英] Dispersing n points uniformly on a sphere

查看:20
本文介绍了将 n 个点均匀地分散在球面上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在一个球体上分散 n 个点,这样每个点都有围绕"它的相同"区域.基本上,我试图通过评估 n 个点并假设每个区域元素相同(并且等于 4pi r^2/n)来在球体上集成一个函数.

我的问题与,它生成一个网格,使得每个点它周围有相等的面积"(向下滚动以查看球体上的均匀区域分布),但我没有实现他们的代码,而是采用了一种耗时较少的方法:我只是迭代了方位角和极角([0,2pi] 和 [0,pi])并计算每个补丁的无穷小"面积(da = r^2 sin theta dtheta dphi).这基本上是我在球体上进行集成所需的全部内容,我只是希望均匀区域分布不会那么难实现.

解决方案

背景资料:

一个球体中有 4 个 pi 球面度,这是球体中的总度数",但我仅在相对意义上使用该术语,因为球面度与圆形中的常规弧度非常不同,其中之一是 3尺寸,因此是固体.只需将它们视为球体中的冰淇淋形状的角度.

I am trying to disperse n points on a sphere such that each point has the "same" area "around" it. Basically, I'm trying to integrate a function over a sphere by evaluating at n points and assuming that each area element is the same (and equal to 4pi r^2/n).

My question is very related to this one, but I can't seem to agree that the code presented in the "accepted" answer works as desired (see attached photo, generated by choosing R = 1000, nx = ny = 40). Clearly, my points are much more concentrated at the poles and very un-concentrated along the equator.

Any suggestions?

EDIT: For reference, I did find some software that generates a mesh such that each point has equal "area" around it (scroll down to see uniform area distribution on a sphere), but rather than implement their code I went with a less-time consuming approach: I simply iterated over the azimuthal and polar angles ([0,2pi] and [0,pi]) and computed the ''infinitesimal'' area of each patch (da = r^2 sin theta dtheta dphi). This is basically all I need for integration over the sphere, I was just hoping that uniform-area distribution wouldn't be so hard to implement.

解决方案

Background information:

There are 4 pi steradians in a sphere, that's the total 'degrees' in a sphere, but I use the term only in the relative sense because steradians are very different from regular radians in a circle, for one, they are 3 dimensional and therefore are solid. Just consider them as ice cream shaped angles in a sphere.

http://en.wikipedia.org/wiki/Steradian provides a great example of them.

They have a direct relationship to the radius, like radians in a circle. 1 steradian = 1 unit of radius squared.

So, first find out how many items need to be plotted on the sphere. Let that number be n. sr = steradians (unit of measure) = r^2 (radius squared)

4 pi / n sr = x

x is how many steradians are allocated to each point.

let's say for 4 points.

4 pi / 4 sr = x

pi sr = x So each point will get an allocated space of pi sr.

Now consider this... since you are plotting points, we will consider that each point will be placed in the middle of the allocated space... that is to say, in the middle of the conal shaped area which is what sr is. Now you need to consider something for a moment, is it possible to fill an area completely with circles? Seriously, think about this... it's not is it? Solid circles will always leave room in between in certain spots. Think about a soccer ball for a moment. It is constructed from shapes that can come together to provide even distribution. The point of this thought is to get you to realize that all dots cannot be exactly a certain distance apart--like how a circle has a radius. Yet, the center of the soccer ball squares comes very close and is uniform.

What I would do if I were you, would be to try and write an algorithm to identify the most efficient 'shape' to put each of these 'chunks' of allocated spherical space in... like the soccer ball. Otherwise, I think this might be the best answer you're going to get... 4 pi / n sr = x... , there's no way for each point to be plotted so it exactly the same distance from each other, (except in certain configurations, i.e. it would be possible with special number of points), there may an algorithm out there to find all the special cases.

I am editing this answer to elaborate on the special cases, a little extra information would be good here I think. The special cases for the points to be equidistance apart are that they may form the vertices of platonic solids. There are only 5 basic platonic solid shapes, all others are made by these.

Read this page for more information and proof of this https://www.uwgb.edu/dutchs/symmetry/platonic.htm

Now I can't take credit, I did some quick research and found a similar post https://math.stackexchange.com/questions/279544/return-an-array-of-evenly-distributed-points-on-a-sphere-give-radius-and-origin

Using Euler's polyhedron formula http://plus.maths.org/content/eulers-polyhedron-formula

and the fact that only three basic shapes exist on polyhedrons, 'triangles, squares, and hexagons' you can create an algorithm to round the number of points you want to plot, to the nearest polyhedron shape and plot each one evenly.

Oh, and take a look at this great article, it explains steradians and 3-dimensional 'degrees' much better than I. http://mathforum.org/library/drmath/view/55358.html

这篇关于将 n 个点均匀地分散在球面上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆