|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.05.2011, 23:36 | #1 |
Новичок
Джуниор
Регистрация: 26.05.2011
Сообщений: 1
|
ДВИЖЕНИЕ ШАРА ПО ПАРАБОЛЕ.КОСЯК С ТАЙМЕРОМ.
ШАР ДВИЖЕТСЯ С ПОВЕРХНОСТИ ПО ПАРАБОЛЕ , ВЗЛЕТАЕТ С ЛЕВОГО УГЛА И ПРИЗЕМЛЯЕТСЯ В ПРАВОМ УГЛУ НА ПОВЕРХНОСТЬ , ПРИ ЭТОМ ОН ВРАЩАЕТСЯ. ПРОБЛЕМА В ТОМ ЧТО НЕКОРРЕКТНО ЗАДАЁТСЯ СКОРОСТЬ ШАРА И СКОРОСТЬ ВРАЩЕНИЯ ШАРА И Я НАОБУМ ПОДГОНЯЛ ТРАЕКТОРИЮ ПОД ПАРАБОЛУ. ПРОШУ ПОМОЧЬ СО СКОРОСТЯМИ И С ТРАЕКТОРИЕЙ(с траекторией особенно) вот код
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; const xn=10.0; yn=434.0; d=20.0; m=pi/180; r=30.0; type m1=array[1..18] of real; TForm1 = class(TForm) Timer1: TTimer; Button1: TButton; Button2: TButton; Button3: TButton; Button5: TButton; Edit1: TEdit; Label1: TLabel; Label2: TLabel; Edit2: TEdit; Button4: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button4Click(Sender: TObject); private x,y,xk,yk:m1; interval,dx,dy:integer; f:real; public procedure Risunok; procedure perenos(var xx,yy:real); procedure Povorot(var xx,yy:real; xc,yc:integer); { Public declarations } end; var Form1: TForm1; cvet:boolean; i:integer; di,dl:real; //di - проекция радиуса на ось при угле=45гр. v,w:real; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); //var i: integer; begin Timer1.Enabled:=false; Timer1.Interval:=interval; //ввод скорости interval:=40; f:=0.12; dx:=1; //1 dy:=25; //ввод координат точек xk[5]:=xn; yk[5]:=yn; xk[6]:=xk[5]+2*r; yk[6]:=yk[5]+2*r; xk[1]:=xk[5]; yk[1]:=yk[5]+r; xk[2]:=xk[5]+2*r; yk[2]:=yk[5]+r; xk[3]:=xk[5]+r; yk[3]:=yk[5]; xk[4]:=xk[5]+r; yk[4]:=yk[5]+2*r; end; procedure TForm1.Risunok; begin with canvas do begin // рисуем ШАР brush.style:=bssolid; brush.color:=clwhite; ellipse(round(xk[5]),round(yk[5]),round(xk[6]),round(yk[6])); moveto(round(xk[1]),round(yk[1])); lineto(round(xk[2]),round(yk[2])); moveto(round(xk[3]),round(yk[3])); lineto(round(xk[4]),round(yk[4])); end; end; // СТАТИЧЕСКОЕ ИЗОБРАЖЕНИЕ procedure TForm1.Button1Click(Sender: TObject); begin FormCreate(Sender); with Canvas do begin Brush.Style:=bsSolid; Brush.Color:=clWhite; Rectangle(0,0,ClientWidth,ClientHei ght); Risunok; moveto(0,ClientHeight-50); lineto(ClientWidth,ClientHeight-50); end; end; //ДВИЖЕНИЕ procedure TForm1.Button2Click(Sender: TObject); begin Timer1.Enabled:=true; end; //движение ШАРА procedure TForm1.perenos(var xx,yy:real); begin xx:=xx+15*dx; yy:=yy-dy; end; //вращение ШАРА procedure TForm1.Povorot(var xx,yy:real; xc,yc:integer); var p:real; begin p:=xx; xx:=round(xc+(xx-xc)*cos(f)+(yy-yc)*sin(f)); yy:=round(yc-(p-xc)*sin(f)+(yy-yc)*cos(f)); end; //ТАЙМЕР procedure TForm1.Timer1Timer(Sender: TObject); var i:integer; px,py:integer; begin dx:=dx; dy:=dy-1; if (yk[1]>=423) and (xk[1]>=200) then Timer1.Enabled:=false; Canvas.Pen.Color:=clWhite; Risunok; for i:=1 to 7 do begin perenos(x[i],y[i]); perenos(xk[i],yk[i]); end; px:= round((xk[1]+xk[2]) / 2); py:= round((yk[3]+yk[4]) / 2); for i:=1 to 4 do povorot(xk[i],yk[i],px,py); Canvas.Pen.Color:=clBlack; Risunok; if yk[4]=r then begin dy:=0; dx:=0; end; end; //СТОП procedure TForm1.Button3Click(Sender: TObject); begin Timer1.Enabled:=false; end; //ВЫХОД procedure TForm1.Button5Click(Sender: TObject); begin close; end; procedure TForm1.Button6Click(Sender: TObject); begin cvet:=false; end; procedure TForm1.Button4Click(Sender: TObject); begin v:=StrToFloat(Edit1.text); w:=StrToFloat(Edit2.text); end; end. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вычислить радиус шара! | Sandra_Breiv | Помощь студентам | 1 | 27.01.2011 14:32 |
Задать движение шара по траектории параболы в Delphi | reznor264 | Помощь студентам | 6 | 02.11.2010 19:36 |
Как реализовать форму с в виде объямного шара? | Mixasik | Общие вопросы Delphi | 12 | 02.09.2009 06:51 |
Решение задачи на нахождение площади и обьема куба(а также вписанного шара) | soldm | Помощь студентам | 4 | 30.09.2008 08:32 |
процедура, которая вычисляет объем шара | motaro | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 21.01.2008 19:22 |