Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2009, 20:01   #1
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость Движение тела под углом

Есть прямогугольник(тело), которое движеться по прямой с коф трения (вводим с формы), правый конец который по таймеру опускаеться!

На счет опускания прямой вот код (спасибо Stilet)

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
with Canvas do begin
 FillRect(ClipRect);
 MoveTo(100,100);
 LineTo(Round(100*cos(x)+100),Round(100*sin(x))+100);
 x:=x+0.11;
 if x>pi/2 then TTimer(Sender).enabled:=false;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
x:=0;
end;
Помогите дописать движения этого тела в зависимости от коф трения?!
Мои размышления:Нужно нарисовать прямоугольник с помощью Canvas.Rectangle с задаными координатами и по таймеру или по цыклу сделать движения этого тела (УЧИТЫВАЯ коф трения)!
Lemo вне форума Ответить с цитированием
Старый 31.03.2009, 20:06   #2
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Это формулы движения тела под углом, а само задание я не понял
x:=x0+Cos(angle*Pi/180)*STEP;
y:=y0+Sin(angle*Pi/180)*STEP;
Levsha100 вне форума Ответить с цитированием
Старый 31.03.2009, 20:33   #3
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

Увеличение угла пидёма поверхности, пока из него не начнет сдвигаться тело, при заданном коэффициенте трения f!

Написал прямую, которая движеться, помогите написать движение прямоугольника с наследованием!
Код:
Line = class
   x1,y1,x2,y2:integer;
   constructor Init(a,b,c,d:integer);
   procedure Mal(x1,y1,x2,y2:integer);
   procedure move(x1,y1,x2,y2,L:integer);

end;

Pram = class(Line)
   x3,y3,x4,y4,x5,y5:integer;
   L:integer;
   constructor Init(a1,b1,c1,d1,i1,f1:integer);
   procedure Mal(x3,y3,x4,y4,x5,y5:integer);
   procedure move(L:integer);
end;


var
  Form1: TForm1;
  Line1:Line;
  x9:extended;
implementation

{$R *.dfm}

Constructor Line.Init(a,b,c,d:integer);
   begin
      x1:=a;   y1:=b;
      x2:=c;   y2:=d;
   end;

procedure Line.Mal(x1,y1,x2,y2:integer);
   begin
      with Form1,Canvas do
         begin
            MoveTo(x1,y1);
            LineTo(x2,y2);
         end;
   end;

procedure Line.move(x1,y1,x2,y2,L:integer);

   begin
      with Form1,Canvas do
         begin
         Mal(100,100,Round(180*cos(x9)+100),Round(180*sin(x9))+100);
         end;
   end;





Constructor Pram.Init(a1,b1,c1,d1,i1,f1:integer);
   begin
      x3:=a1;   y3:=b1;
      x4:=c1;   y4:=d1;
      x5:=i1;   y5:=f1;
   end;

procedure Pram.Mal(x3,y3,x4,y4,x5,y5:integer);
 var xc,yc:real; xk,yk:integer;
   begin
      with Form1,Canvas do
         begin
            Line1.Mal(x3,y3,x4,y4);
            Line1.Mal(x3,y3,x5,y5);
            Line1.Mal(x4,y4,xk,yk);
            Line1.Mal(x5,y5,xk,yk);
         end;
   end;

   
procedure Pram.move(L:integer);
 var k,xk,yk:integer; xc,yc:real;
   begin
      with Form1,Canvas do
         begin

         end;
   end;

  
procedure TForm1.Button1Click(Sender: TObject);
begin
 timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
with Canvas do begin
 FillRect(ClipRect);
 line1.mal(100,100,Round(180*cos(x9)+100),Round(180*sin(x9))+100);
 x9:=x9+0.10;
 if x9>pi/2 then
 begin
  timer1.Enabled:=false;
   end;
 end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
x9:=0;
end;

Последний раз редактировалось Stilet; 02.04.2009 в 17:10.
Lemo вне форума Ответить с цитированием
Старый 01.04.2009, 21:01   #4
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
Радость

формула:
Код:
 Ffr = kN
Алгоритм таков:
После изменения угла мы проецируем силу тяжести-получаем значение N, k-константа. Потом к горизонтальной скорости прибавляем спроецированное значение силы трения, для вертикальной скорости - тоже.И еще к этим составляющим прибавляем MG(опять же спроецированное).Рисуем тело.Проверяем скорость, если больше 0 то - конец.
Вроде все
Levsha100 вне форума Ответить с цитированием
Старый 02.04.2009, 16:56   #5
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

а ты бы мог кодом помочЬ?
Lemo вне форума Ответить с цитированием
Старый 04.04.2009, 12:26   #6
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

На рисунке показано движения тела и ниже - движения прямой, помогите реализовать движения тела!
Мне кто то поможет или нет?! тело сотавляеться из 4 линий, просто там нужно c углами работать!
Изображения
Тип файла: jpg Безымянный.jpg (5.3 Кб, 131 просмотров)

Последний раз редактировалось Lemo; 04.04.2009 в 14:34.
Lemo вне форума Ответить с цитированием
Старый 05.04.2009, 14:49   #7
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

Цитата:
Сообщение от Lemo Посмотреть сообщение
На рисунке показано движения тела и ниже - движения прямой, помогите реализовать движения тела!
Мне кто то поможет или нет?! тело сотавляеться из 4 линий, просто там нужно c углами работать!
Вот так ну только тело долно двиготься по углом по прямой!
Изображения
Тип файла: jpg Безымянный.jpg (13.1 Кб, 128 просмотров)
Lemo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста решить задачу с вращением объёмного тела! (Турбо Паскаль) mens-evgenij Помощь студентам 10 12.03.2009 18:07
извлечение из своего тела exe файла Titan123 Общие вопросы Delphi 4 22.10.2008 19:17
движение вокруг тела по заданной траектории PADOCTb Помощь студентам 2 12.10.2008 16:39
Графика под углом BOBAH13 Мультимедиа в Delphi 5 12.09.2008 21:18
Распознавание тела письма при получении iamur Работа с сетью в Delphi 1 11.02.2008 17:33