Моделирование прыжка с трамплина
Дипломная работа - Математика и статистика
Другие дипломы по предмету Математика и статистика
p>{ М о д у л ь д л я м о д е л и р о в а н и я
п р ы ж к а с т р а м п л и н а
Предельная скорость растет в полете в зависимости от угла атаки }
{$E+}{$N+}
unit ForJump3;
interface
uses Graph, Crt;
const dt: Extended=1E-3;
G=9.82;
WWW=-1;
TL=0.5; { время подготовки к приземлению}
QuestionColor:Word=LightBlue;
AnswerColor:Word=LightGreen;
TramplinColor:Word={Red}White;
TramplinDataColor:Word=Red;
JumpColor:Word=White;
JumpDataColor:Word=White;
Background:Word=Black;
var n1, i: byte;
S1, S2, S3, S4, S5, S6: string;
Scale, KLine, BLine, {масштаб рисунка и параметры горы приземления}
Length, VY, {дальность прыжка и скорость приземления}
K, H, N, HN, H1, YH, S, YO, ALFA, BETA: Extended; {трамплин}
VPr0, V0, Gamma: array[1..7] of Extended; {прыгуны}
procedure EnterBasicData;
{Ввод базовых параметров трамплина}
procedure CalculateTramplin;
{Вычисление остальных параметров трамплина}
procedure EnterJumpers;
{Ввод данных о прыгунах}
procedure Scaling;
{Вычисление масштабов}
procedure WriteTramplinData;
{Вывод данных о трамплине}
procedure DrawTramplin;
{Рисование трамплина}
procedure Jump;
{Прыжок}
implementation
procedure EnterBasicData;
{Ввод базовых параметров трамплина}
begin
ClrScr; TextColor(QuestionColor);
WriteLn( Моделирование прыжка с трамплина);
WriteLn(Входные параметры:);
WriteLn( Параметры трамплина:);
Write(H, H:N, K, beta, alfa=);
{H, гор. коорд. точки K, углы}
TextColor(AnswerColor); ReadLn(H,HN,K,BETA,ALFA);
TextColor(QuestionColor);
Alfa:=-Alfa*Pi/180; Beta:=-Beta*Pi/180;
end;
procedure CalculateTramplin;
{Вычисление остальных параметров трамплина}
var W: Extended;
begin
N:=H/HN; {она и в Африке N}
H1:=Abs((K-N)*Sin(BETA)/Cos(BETA));
{верт. коорд. точки P - начала участка приземления}
YH:=H+H1; {высота склона в месте отрыва}
W:=Sqrt(H*H+N*N); {удаление от канта отрыва до критической точки}
S:=0.03*W; {высота стола отрыва над склоном}
YO:=YH+S; {высота отрыва}
end;
procedure EnterJumpers;
{Ввод данных о прыгунах}
var I: Byte; Gamma1, VPr01, V01: Extended;
begin
N1:=7;
WriteLn( Параметры прыгунов: предельная скорость);
WriteLn( Вводятся ,N1, графиков, хочешь меньше - задай Vпр=0);
Gamma1:=20;
VPr01:=70;
TextColor(QuestionColor); Write( Vo=);
TextColor(AnswerColor); ReadLn(V01);
for I:=1 to N1 do begin
Gamma[I]:=Gamma1*Pi/180;
VPr0[I]:=VPr01;
V0[I]:=V01+0.2*(I-1);
end;
end;
procedure Scaling;
{Вычисление масштабов}
var MX, My: Extended;
begin
MX:=600/K; My:=400/YO; if MX<My then My:=MX else MX:=My;
Scale:=MX;
KLine:=H1/(N-K); BLine:=-KLine*K;
end;
procedure WriteTramplinData;
{Вывод данных о трамплине}
begin
SetColor(TramplinDataColor);
Str(1/Scale:4:2,S6);
Str(H:0:1,S1);
Str(N:0:1,S2);
Str(Alfa*180/Pi:0:1,S3);
Str(Beta*180/Pi:0:1,S4);
Str(K:0:1,S5);
{ S6:=Масштаб: +S6+м:1точка, Трамплин: H=+S1+
, N=+S2+, alfa=+S3+, beta=+S4+, K=+S5;
OutTextXY(0,401,S6);}
end;
procedure DrawTramplin;
{Рисование трамплина}
var GD, GM: Integer;
S, S1, S2, S3, S4, S5: string;
begin
GD:=Detect;
InitGraph(GD,GM,);
SetColor(TramplinColor);
SetBkColor(Background);
MoveTo(0,400-Round(Scale*YO));
LineTo(0,400-Round(Scale*YH));
{уступ}
LineTo(Round(Scale*N),400-Round(Scale*H1));
{нерабочий участок}
LineTo(Round(Scale*K),400);
{участок для приземлений}
WriteTramplinData;
end;
procedure Jump;
{Прыжок}
var T, F1, K1, VPr12, VPr2, Vx, Vx0, Vy, Vy0, V, X, Y, A, B, Sin1, Cos1,
SinAG, TK, Gamma1: Extended;
S: string;
function EndofJump: Boolean;
begin
if ((X<N)and(Y<=-HN*X+YH)) then EndofJump:=True
else if ((YN)) then EndofJump:=True
else if X>K then EndofJump:=True
else EndofJump:=False;
end;
begin
SetColor(JumpColor);
Vx0:=V0[I]*Cos(Alfa);
Vy0:=V0[I]*Sin(Alfa);
Vx:=Vx0;
Vy:=Vy0;
V:=Sqrt( Sqr(Vx0)+Sqr(Vy0) );
X:=0; Y:=YO;
VPr2:=Sqr(VPr0[I]);
Gamma1:=Gamma[I];
Sin1:=Sin(Gamma1);
Cos1:=Cos(Gamma1);
SinAG:=Sin(Gamma1-Alfa);
repeat
A:=Vx*Sin1-Vy*Cos1;
B:=Vx*Cos1+Vy*Sin1;
F1:=B/A;
K1:=G*A/VPr2/V/SinAG;
V:=Sqrt( Sqr(Vx0+WWW*dt)+Sqr(Vy0) );
Vx:=Vx0-K1*V*(Vx0+F1*Vy0)*dt+WWW*dt;
Vy:=Vy0-G*dt-K1*V*(Vy0-F1*Vx0)*dt;
X:=(Vx+Vx0)*dt/2+X;
Y:=(Vy+Vy0)*dt/2+Y;
PutPixel( Trunc(X*Scale), Trunc(400-Y*Scale), JumpColor);
Vx0:=Vx; Vy0:=Vy;
until EndofJump;
Vy:=Vx*Sin(Beta)-Vy*Cos(Beta);
{вертикальная составляющая скорости приземления}
Length:=Sqrt(Sqr(H)+Sqr(N))+((X-N)/Cos(Beta));
{дальность прыжка}
{вывод данных о прыжке}
Str(I,S);
SetColor(JumpDataColor);
OutTextXY( Trunc(X*Scale)-8, Trunc(400-Y*Scale), S);
Str(Abs(V0[I]):4:2,S6);
Str(Abs(VPr0[I]):4:2,S1);
Str(Length:0:1,S3);
Str(Abs(VY):4:2,S4);
Str(I,S5);
S6:=S5+: Vo=+S6+м/с, Vпр=+S1+м/с;
if ((X>N)and(X<K)) then
S6:=S6+, Дальность=+S3+м, скорость=+S4+м/с;
OutTextXY(10,401+10*I,S6);
end;
begin
end.
(TK-0.5) - Gamma
TK - Beta
Gamma=K*(TK-0.5)+B
Beta=K*TK+B
-----------------------
(Gamma-Beta)=-K/2 => K=2*(Beta-Gamma)
B=Beta-K*TK
-----------------------
Fi(T)=K*(T-TK)+Beta
Библиография
1. Грозин, Е. А. (1971) Прыжки с трамлина. Физкультура и спорт, Москва
2. Ремизов, Л. П. (1973) Максимальная дальность прыжка с трамплина.
Теория и практика физической культуры, 3, 73-75.
3. Remizov L. P. Biomechanics of optimal ski jump. J.Biomechanics, 1984, vol.17, №3, pp.167-171.
4. Н.А.Багин, Ю.И.Волошин, В.П.Евтеев. К теории полета лыжника при прыжках с трамплина. /Теория и практика физической культуры, №2, 1997, сс.9-11.
5. Komi, P. V., Nelson, R. S. and Pulli, M. (1974) Biomechanics of Ski-Jumping. Jivaskyla.
6. Петров В. А., Гагин Ю. А. Механика спортивных движений. М.:
Физкультура и спорт, 1977
7. Флетчер К. Вычислительные методы в динамике жидкостей: в двух томах. - М.: Мир, 1991.
8. Тарунин Е.Л. Двухполевой метод решения задач гидродинамики вязкой жидкости. Пермь, ПГУ, 1985.
9.HTTE. Справочник для инженеров, техников и студентов. Том первый. М.-Л., главная редакция литературы по машиностроению и металлообработке, 1936.