Моделирование прыжка с трамплина

Дипломная работа - Математика и статистика

Другие дипломы по предмету Математика и статистика

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.