咨询一个球面均匀分布抽样的问题
mathematica吧
全部回复
仅看楼主
level 1
明朗 楼主
data = {}
For[i = 1, i <= 20000,
i++, {\[Phi] = RandomReal[{0, 2 Pi}], t = RandomReal[{0, 1}],
x[i] = Sqrt[1 - t^2] Sin[\[Phi]], y[i] = Sqrt[1 - t^2] Cos[\[Phi]],
z[i] = t}; AppendTo[data, {x[i] , y[i] , z[i]}]]
ListPlot3D[{data}, Mesh -> None]
如果改成全球面 即在z的表达式里加入正负
data = {}
For[i = 1, i <= 20000,
i++, {\[Phi] = RandomReal[{0, 2 Pi}], t = RandomReal[{0, 1}],
a = If[RandomReal[{0, 1}] > 0.5, 1, -1],
x[i] = Sqrt[1 - t^2] Sin[\[Phi]], y[i] = Sqrt[1 - t^2] Cos[\[Phi]],
z[i] = t*a}; AppendTo[data, {x[i] , y[i] , z[i]}]]
ListPlot3D[{data}, Mesh -> None]
为什么出来的不是一个球体 而是一个椭球体
2019年02月14日 09点02分 1
level 1
明朗 楼主
另外这个图形好像并不能直接看出是面上的均匀分布吧 如果有的地方的点取得更密 好像没有区别? 要怎么做到像这个图里一样,把每个点都标出来 而不是直接把所有点连起来形成的面上色呢
2019年02月14日 09点02分 2
level 1
明朗 楼主
解决了
data = {}
For[i = 1, i <= 20000,
i++, {\[Phi] = RandomReal[{0, 2 Pi}], t = RandomReal[{0, 1}],
a = If[RandomReal[{0, 1}] > 0.5, 1, -1],
x[i] = Sqrt[1 - t^2] Sin[\[Phi]], y[i] = Sqrt[1 - t^2] Cos[\[Phi]],
z[i] = t*a}; AppendTo[data, {x[i] , y[i] , z[i]}]]
Show[Graphics3D[{PointSize[Small], Pink, Point[data]}],
Boxed -> False]
2019年02月20日 11点02分 7
吧务
level 15
……为什么不用RandomPoint
2019年03月02日 05点03分 8
1