2016-09-06 5 views
0

Мне дано указание создать анимацию (в Mathematica) точки, движущейся вдоль кривой, созданной общей частью эллипсоида и плоскости.Движение точки на кривой в Mathematica

Я сделал следующее, насколько мог, но я застрял.

Image

Формула для поверхности эллипсоида и плоскостью (?):

  • эллипсоида поверхности x^2/4 + y^2/9 + z^2=1
  • Plane z=-x+2y
+0

алгебраически решается для 'x', примечание y должно находиться в диапазоне' +/- 3 Sqrt [5/41] 'и генерировать« таблицу »точек. Это может показаться немного неуклюжим, но я не вижу более элегантного подхода. – agentp

+0

Я думаю, что уравнение плоскости 'z = -x + 2 * y' скорее соответствовало бы' InfinitePlane [{{1, 0, -1}, {0, 0, 0}, {0, 1, 2}} ] ', так как в этом виде' InfinitePlane' ожидает три точки, определяющие плоскость – ewcz

ответ

2

вы могли бы использовать ContourPlot для создания кривой, затем извлеките точки, представляющие кривую, и используйте Manipulate для генерации е анимации, т.е.

P = ContourPlot[x^2/4 + y^2/9 + (-x + 2*y)^2 == 1, {x, -3, 3}, {y, -3, 3}]; 

(* let's (ab)use the points *) 
pnts = P[[1, 1]]; 

Manipulate[ 
    Show[ 
     P, 
     ListPlot[pnts[[i ;; i]], PlotStyle -> {PointSize -> Large, Red}] 
    ], {i, 1, Length[pnts], 1} 
] 

Затем отдельные кадры выглядят следующим образом:

enter image description here

Кроме того, можно было бы продолжить с "3D" попытка как

pnts3D = {#[[1]], #[[2]], -#[[1]] + 2*#[[2]]} & /@ pnts; 
Animate[ 
    Graphics3D[{Opacity[0.5], Ellipsoid[{0, 0, 0}, {2, 3, 1}], 
    Opacity[0.75], InfinitePlane[{{1, 0, -1}, {0, 0, 0}, {0, 1, 2}}], 
    Opacity[1], Red, PointSize[Large], Point[pnts3D[[i ;; i]]]}] 
, {i, 1, Length[pnts3D], 1}] 

Здесь , уравнение плоскости используется для однозначной генерации координаты z.

Смежные вопросы