Задача №2.8 ( Гильманов Роман, 202 группа, 2011/12 уч.гг.)

Круг радиуса a катится по окружности радиуса b без скольжения, оставаясь внутри ее, b меньше чем a. Точка M жестко связана с кругом и находится на расстоянии d от центра. Визуализировать движение точки M и ее траекторию в зависимости от времени и параметров d и b, задаваемых динамически. Выяснить, при каких значениях параметров имеются точки самопересечения, особые точки.

Text[Style["Пусть радиус b неподвижной окружности равен 60.", Blue,22]]

Text[Style["Уравнение траектории точки M катящейся окружности
x = (b - a) Cos(at/b) + d Cos(t - at/b), y = (b - a) Sin(at/b) - d Sin(t - at/b) и
сама траектория (гипоциклоида) :", Blue,22]]

Manipulate [

If[Дельтоида&&Астроида,Text[Style[ "Неудачный эксперимент",20,Blue]],

If[


Дельтоида,

Show[

Graphics [{PointSize[Medium], Point[{(60-20)*Cos[c]+20*Cos[c*60/20-c],(60-20)*Sin[c]-20*Sin[c*60/20-c]}],Text[Style["M'",Large],{(60-20)*Cos[c]+20*Cos[c*60/20-c]+5,(60-20)*Sin[c]-20*Sin[c*60/20-c]+5}]},
   Axes->True,Ticks->None, AxesLabel->{x,y},AxesStyle->Arrowheads[0.05],PlotRange->70],

Graphics[{PointSize[Medium], Point[{(60-20)*Cos[0]+20*Cos[0],(60-20)*Sin[0]-20*Sin[0]}],
Text[Style["M",Large],{(60-20)*Cos[0]+20*Cos[0]+5,(60-20)*Sin[0]-20*Sin[0]+5}]}],

ParametricPlot [{ 
 {60*Cos[m],60*Sin[m]},(*окружность*)
 {20*Cos[m]+(60-20)*Cos[0],20*Sin[m]+(60-20)*Sin[0]},
 {20*Cos[m]+(60-20)*Cos[c],20*Sin[m]+(60-20)*Sin[c]}},          (*движущаяся окружность*)
                                                                
{m,0,6*Pi},
 PlotStyle->{Green,
                        Directive[Yellow,Thick],
                        Directive[Yellow,Thick]}
	                        ],

 ParametricPlot[
{(60-20)*Cos[f]+20*Cos[f*60/20-f],(60-20)*Sin[f]-20*Sin[f*60/20-f]},
{f,0.0001,c},
PlotStyle->{Dashed}, 
ColorFunction-> "Rainbow"],ImageSize-> 500

],

If[Астроида,
Show[

Graphics [{PointSize[Medium], Point[{(60-15)*Cos[c]+15*Cos[c*60/15-c],(60-15)*Sin[c]-15*Sin[c*60/15-c]}],Text[Style["M'",Large],{(60-15)*Cos[c]+15*Cos[c*60/15-c]+5,(60-15)*Sin[c]-15*Sin[c*60/15-c]+5}]},
   Axes->True,Ticks->None, AxesLabel->{x,y},AxesStyle->Arrowheads[0.05],PlotRange->70],

Graphics[{PointSize[Medium], Point[{(60-15)*Cos[0]+15*Cos[0],(60-15)*Sin[0]-15*Sin[0]}],
Text[Style["M",Large],{(60-15)*Cos[0]+15*Cos[0]+5,(60-15)*Sin[0]-15*Sin[0]+5}]}],

ParametricPlot [{ 
 {60*Cos[m],60*Sin[m]},(*окружность*)
 {15*Cos[m]+(60-15)*Cos[0],15*Sin[m]+(60-15)*Sin[0]},
 {15*Cos[m]+(60-15)*Cos[c],15*Sin[m]+(60-15)*Sin[c]}},          (*движущаяся окружность*)
                                                                
{m,0,6*Pi},
 PlotStyle->{Green,
                        Directive[Yellow,Thick],
                        Directive[Yellow,Thick]}
	                        ],

 ParametricPlot[
{(60-15)*Cos[f]+15*Cos[f*60/15-f],(60-15)*Sin[f]-15*Sin[f*60/15-f]},
{f,0.0001,c},
PlotStyle->{Dashed}, 
ColorFunction-> "Rainbow"],ImageSize-> 500

],
Show[

Graphics [{PointSize[Medium], Point[{(60-a)*Cos[c]+d*Cos[c*60/a-c],(60-a)*Sin[c]-d*Sin[c*60/a-c]}],Text[Style["M'",Large],{(60-a)*Cos[c]+d*Cos[c*60/a-c]+5,(60-a)*Sin[c]-d*Sin[c*60/a-c]+5}]},
   Axes->True,Ticks->None, AxesLabel->{x,y},AxesStyle->Arrowheads[0.05],PlotRange->70],

Graphics[{PointSize[Medium], Point[{(60-a)*Cos[0]+d*Cos[0],(60-a)*Sin[0]-d*Sin[0]}],
Text[Style["M",Large],{(60-a)*Cos[0]+d*Cos[0]+5,(60-a)*Sin[0]-d*Sin[0]+5}]}],

ParametricPlot [{ 
 {60*Cos[m],60*Sin[m]},(*окружность*)
 {a*Cos[m]+(60-a)*Cos[0],a*Sin[m]+(60-a)*Sin[0]},
 {a*Cos[m]+(60-a)*Cos[c],a*Sin[m]+(60-a)*Sin[c]}},          (*движущаяся окружность*)
                                                                
{m,0,6*Pi},
 PlotStyle->{Green,
                        Directive[Yellow,Thick],
                        Directive[Yellow,Thick]}
	                        ],

 ParametricPlot[
{(60-a)*Cos[f]+d*Cos[f*60/a-f],(60-a)*Sin[f]-d*Sin[f*60/a-f]},
{f,0.0001,c},
PlotStyle->{Dashed}, 
ColorFunction-> "Rainbow"],ImageSize-> 500]
]]], 
                        {Дельтоида,{False,True}},
                         {Астроида,{False,True}},
Delimiter,
  		   {{a,10,"Радиус маленькой окружности:"},1,60-1},
                         {{d,1,"Расстояние до центра:" },0,a},
                         {{c,1, "Время:"},0,6*Pi},
                        ControlPlacement->{Left}
		  ]