由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请问如何在球体表面均匀分布N个点(赠送包子) (转载)
相关主题
有人作过Surface Triangulation嘛?这里的人用BOOST都是用来做什么?
如何把图1转成图2?[合集] 问个土问题 printf, 别Peng
round问题[合集] perl symbol tables 一问
what's wrong with this scripts?variable passing?[合集] 一个问题,谢谢指教 (转载)
C# HtmlElement.InvokeMember at Amazon.com问个Perl的简单问题
怎么非ASCII字符就过滤不了呢?[Perl]容器里边放指针怎么办?
how to sed from grep output in c shell? (转载)PERL问题
a linux disk IO question (转载)perl problem
相关话题的讨论汇总
话题: 均匀分布话题: points话题: 个点话题: 坐标
进入Programming版参与讨论
1 (共1页)
h****a
发帖数: 580
1
【 以下文字转载自 Mathematics 讨论区 】
发信人: hpanda (panda), 信区: Mathematics
标 题: 请问如何在球体表面均匀分布N个点(赠送包子)
发信站: BBS 未名空间站 (Thu Oct 30 11:47:20 2008)
诚心诚意向各位请教一个问题:假设有一个半径为R的球,如何在球面均匀分布N个点?
这里的“均匀”并不要求数学上的严格,只要最近的点点距离对所有的点都大致相等就
可以。关键是要容易通过一段程序来实现,也就是说,假设球心位于XYZ坐标系的原点
,向程序输入两个参数:半径R,点数N,程序运算后能给出N个坐标。
多谢!若哪位大侠能给出解决方案,有包子赠送。
p**s
发帖数: 2707
2
N个点在大圆上均匀排一圈,就满足“最近的点点距离对所有的点都大致相等”
发包子吧

【在 h****a 的大作中提到】
: 【 以下文字转载自 Mathematics 讨论区 】
: 发信人: hpanda (panda), 信区: Mathematics
: 标 题: 请问如何在球体表面均匀分布N个点(赠送包子)
: 发信站: BBS 未名空间站 (Thu Oct 30 11:47:20 2008)
: 诚心诚意向各位请教一个问题:假设有一个半径为R的球,如何在球面均匀分布N个点?
: 这里的“均匀”并不要求数学上的严格,只要最近的点点距离对所有的点都大致相等就
: 可以。关键是要容易通过一段程序来实现,也就是说,假设球心位于XYZ坐标系的原点
: ,向程序输入两个参数:半径R,点数N,程序运算后能给出N个坐标。
: 多谢!若哪位大侠能给出解决方案,有包子赠送。

k**f
发帖数: 92
3
while(1){
产生三个[-r,r]的随机数xyz
如果x^2+y^2+z^2<=R^2 并且 x,y,z不全为0
return (x,y,z)/sqrt(x^2+y^2+z^2)
}

【在 h****a 的大作中提到】
: 【 以下文字转载自 Mathematics 讨论区 】
: 发信人: hpanda (panda), 信区: Mathematics
: 标 题: 请问如何在球体表面均匀分布N个点(赠送包子)
: 发信站: BBS 未名空间站 (Thu Oct 30 11:47:20 2008)
: 诚心诚意向各位请教一个问题:假设有一个半径为R的球,如何在球面均匀分布N个点?
: 这里的“均匀”并不要求数学上的严格,只要最近的点点距离对所有的点都大致相等就
: 可以。关键是要容易通过一段程序来实现,也就是说,假设球心位于XYZ坐标系的原点
: ,向程序输入两个参数:半径R,点数N,程序运算后能给出N个坐标。
: 多谢!若哪位大侠能给出解决方案,有包子赠送。

l***8
发帖数: 149
4
I think your algo is a good way to initialize the N points
But they're probably not very uniformly distributed on the surface
How about add some kind of spring network that causes points to
repell each other when they get close, and add some friction
then just let the system run for a while until it reaches
some kind of equilibrium

【在 k**f 的大作中提到】
: while(1){
: 产生三个[-r,r]的随机数xyz
: 如果x^2+y^2+z^2<=R^2 并且 x,y,z不全为0
: return (x,y,z)/sqrt(x^2+y^2+z^2)
: }

r****y
发帖数: 26819
5
这个return的是N个点的三维坐标?

【在 k**f 的大作中提到】
: while(1){
: 产生三个[-r,r]的随机数xyz
: 如果x^2+y^2+z^2<=R^2 并且 x,y,z不全为0
: return (x,y,z)/sqrt(x^2+y^2+z^2)
: }

c*****t
发帖数: 1879
6
Something like sphere triangulation?
http://www.mathworks.com/matlabcentral/fileexchange/1877
If not, probably a suitable approach would be do some rounds of
moving points iteratively. But that would be slow.

【在 h****a 的大作中提到】
: 【 以下文字转载自 Mathematics 讨论区 】
: 发信人: hpanda (panda), 信区: Mathematics
: 标 题: 请问如何在球体表面均匀分布N个点(赠送包子)
: 发信站: BBS 未名空间站 (Thu Oct 30 11:47:20 2008)
: 诚心诚意向各位请教一个问题:假设有一个半径为R的球,如何在球面均匀分布N个点?
: 这里的“均匀”并不要求数学上的严格,只要最近的点点距离对所有的点都大致相等就
: 可以。关键是要容易通过一段程序来实现,也就是说,假设球心位于XYZ坐标系的原点
: ,向程序输入两个参数:半径R,点数N,程序运算后能给出N个坐标。
: 多谢!若哪位大侠能给出解决方案,有包子赠送。

p****s
发帖数: 32405
7
人家说的均匀分布恐怕不是这个意思吧.
本来球体可以上上下下左右左右前前后后18摸现在只剩1摸了.

【在 p**s 的大作中提到】
: N个点在大圆上均匀排一圈,就满足“最近的点点距离对所有的点都大致相等”
: 发包子吧

n******t
发帖数: 4406
8
慢了点。
比较好点的做法是用球坐标,
先uniform随机生成柱坐标,然后随机在相应的园上找一点就行了。

while(1){
产生三个[-r,r]的随机数xyz
如果x^2+y^2+z^2<=R^2 并且 x,y,z不全为0
return (x,y,z)/sqrt(x^2+y^2+z^2)
}

【在 k**f 的大作中提到】
: while(1){
: 产生三个[-r,r]的随机数xyz
: 如果x^2+y^2+z^2<=R^2 并且 x,y,z不全为0
: return (x,y,z)/sqrt(x^2+y^2+z^2)
: }

T*******i
发帖数: 4992
9
柱坐标到球坐标的映射会有distort

【在 n******t 的大作中提到】
: 慢了点。
: 比较好点的做法是用球坐标,
: 先uniform随机生成柱坐标,然后随机在相应的园上找一点就行了。
:
: while(1){
: 产生三个[-r,r]的随机数xyz
: 如果x^2+y^2+z^2<=R^2 并且 x,y,z不全为0
: return (x,y,z)/sqrt(x^2+y^2+z^2)
: }

n******t
发帖数: 4406
10
这个情况下没事,你仔细想想就知道了。

【在 T*******i 的大作中提到】
: 柱坐标到球坐标的映射会有distort
z*****m
发帖数: 119
11
你可以这样想,到达均匀分布的情况下之后,所有点的矢量和为零。也就是说对于每个点,其余点的矢量和应该是该点的反向矢量。注意,使用球坐标系
所以你可以试试下面的算法
points[1..k];
loop
maxdistance = 0;
foreach point in points
other = - sum (points - point);
point = (point * phi) + (other * (1 - phi);
maxdistance = max(maxdistance, other - point);
end foreach
while (maxdistance > threshold);
l*******i
发帖数: 247
12
Tessellation的问题
现成代码从这里下载:
http://student.ulb.ac.be/~claugero/sphere/index.html
h****a
发帖数: 580
13
I've found the following web page which is focusing on this problem:
http://www.ogre.nu/sphere.htm
Thank all of you for replying.
1 (共1页)
进入Programming版参与讨论
相关主题
perl problemC# HtmlElement.InvokeMember at Amazon.com
foreach statement 使用怎么非ASCII字符就过滤不了呢?[Perl]
Shuffle performance (C#)how to sed from grep output in c shell? (转载)
有个SB interviewer和我说++i比i++好 (转载)a linux disk IO question (转载)
有人作过Surface Triangulation嘛?这里的人用BOOST都是用来做什么?
如何把图1转成图2?[合集] 问个土问题 printf, 别Peng
round问题[合集] perl symbol tables 一问
what's wrong with this scripts?variable passing?[合集] 一个问题,谢谢指教 (转载)
相关话题的讨论汇总
话题: 均匀分布话题: points话题: 个点话题: 坐标