1

嗨我正在创建3D表面上的布朗运动的模拟,所以我试图链接3dplot和动画功能。 一切都在编译没有任何错误,但我的问题是,我想要随机在表面上移动的球体不显示(当然也不动画)。 可能是什么问题?下面是代码:Sphere不显示| Mathematica

Z[x_, y_] := 4 x + 3 y - 2   
r = 0.05 
Bok = 100 
X[1] = RandomReal[{0, Bok}] 
Y[1] = RandomReal[{0, Bok}] 
Z[1] := Z[X1, Y1] 
P[1] = Point[{X1, Y1, Z1}] 

For[i = 1, i < 1000, i++, X[i + 1] = X[i] + RandomChoice[{0.1, -0.1}]; 
Y[i + 1] = Y[i] + RandomChoice[{0.1, -0.1}]; 
Z[i + 1] = Z[X[i + 1], Y[i + 1]]; 
P[i + 1] := Table[ Point[{X[i + 1], Y[i + 1], Z[i + 1]}], {i, 1000}]; 
(*Print[P[i+1]]*) 
] 

Animate[ 
Show[ 
Plot3D[Z[x, y], {x, 0, Bok}, {y, 0, Bok}, 
ColorFunction -> "DarkRainbow", Mesh -> None], 
Graphics3D[ 
Black, Sphere[P[i], r] 
] 
], 
{i, 1, 1000} 
] 
+0

'Sphere'希望作为参数坐标列表,而不是一个'Point'。这必须抛出一个错误(你的图形盒粉红色?) – agentp

回答

1

一种你开始...

funcZ[x_, y_] := 4 x + 3 y - 2 
r = 0.05; 
Bok = 100; 
X[1] = RandomReal[{0, Bok}]; 
Y[1] = RandomReal[{0, Bok}]; 
Z[a_] := funcZ[X[a], Y[a]] 
P[1] = {X[1], Y[1], Z[1]}; 

For[i = 1, i < 1000, i++, 
X[i + 1] = X[i] + RandomChoice[{0.1, -0.1}]; 
Y[i + 1] = Y[i] + RandomChoice[{0.1, -0.1}]; 
P[i + 1] = {X[i + 1], Y[i + 1], Z[i + 1]}] 

ar = Array[P, 1000]; 

plotrange = Through[{Min, Max}[#]] & /@ Transpose[ar]; 

g = Graphics3D[{Black, Point[Array[P, 1000]]}, BoxRatios -> {1, 1, 1}] 

enter image description here