Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 13.05.2009
Сообщений: 35
1

Движение шарика по траектории кардиоиды

05.05.2012, 13:59. Показов 1708. Ответов 2
Метки нет (Все метки)

Здравствуйте! Помогите, пожалуйста, переделать программу. (нашла ее на вашем форуме, переделала формулы). Нужно, чтобы шарик летел по траектории кардиоиды, и за ним прорисовывалась сама кардиоида. То есть изначально график кардиоиды не должен быть виден.
Вложения
Тип файла: rar Кардиоида.rar (180.2 Кб, 41 просмотров)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2012, 13:59
Ответы с готовыми решениями:

Движение шарика
Посоветуйте пожалуйста формулу по которой можно будет сделать более менее правдивые движения шарика...

Движение шарика по параболе
Помогите пожалуйста написать программу изображающую движения шарика по параболе с использованием...

Движение шарика\картинки
Как сделать: image1 движется в верх и в низ, в право и в лево при столкновении со стененкой формы...

Изобразить движение шарика
Здраствуйте еще раз , форумчани, есть такая задачка: Шарик диаметром D, который считыветься их...

2
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31243 / 20423 / 7960
Регистрация: 22.10.2011
Сообщений: 35,452
Записей в блоге: 6
05.05.2012, 14:22 2
Лучший ответ Сообщение было отмечено volvo как решение

Решение

1) на создание формы добавляем:
Delphi
1
2
3
4
procedure TForm1.FormCreate(Sender: TObject);
begin
   Timer1.Enabled := false;
end;
2) изменяем
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.Button1Click(Sender: TObject);
begin
A:=SpinEdit1.Value;
Shape1.Brush.Color:=ColorBox1.Selected;
x0 :=Form1.ClientWidth div 3;
y0:=Form1.ClientHeight div 2 ;
t:=0;
n:=0;
while t<=2*pi do
 begin
  n:=n+1;
  setlength(mas,n);
  mas[n-1].X:=x0 + round(2*A *Cos(t)*(1+cos(t)));
  mas[n-1].Y:=y0 + round(2*A *sin(t)*(1+cos(t)));
  t:=t+0.01;
 end;
 Timer1.Enabled := true; // Вот тут включаем таймер
end;
3) саму процедуру таймера:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.Timer1Timer(Sender: TObject);
{$J+}
   const
      curr : Integer = 0; // Значение Curr будет сохраняться между вызовами Timer1Timer
{$J-}
var i : integer;
begin
   t:=t+0.01;
   for i := 0 to curr - 1 do // рисуем только те точки, которые ДО текущего положения фигуры
      Form1.Canvas.Pixels[mas[i].X, mas[i].Y]:=clblack;
   inc(curr);
   if curr = Length(mas) then // сделали полный оборот? Чистим форму и все начинаем сначала
   begin
      Form1.Invalidate;
      curr := 0;
   end;
 
   X := x0 + round(2*A *Cos(t)*(1+cos(t)));
   Y := y0 + round(2*A *sin(t)*(1+cos(t)));
   Shape1.Left:=round(X-5);
   Shape1.Top:=round(Y-5);
end;
(исправленный проект присоединять не стал, у меня Дельфи 2009, ты его не откроешь просто)
1
0 / 0 / 0
Регистрация: 13.05.2009
Сообщений: 35
05.05.2012, 14:51  [ТС] 3
Огромное спасибо, очень выручили)

Добавлено через 3 минуты
Скажите, пожалуйста, а что значит {$J+} {$J-}? (если их убрать программа не идет)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2012, 14:51

Движение абсолютно упругого шарика
Здравствуйте. Помогите пожалуйста. Как сделать задание: Найти движение абсолютно упругово шарика в...

Движение предмета по траектории
Помогите !Как сделать так что бы шар(имеет x,y-центр) двигался по прямой траектории,есть начальная...

Движение шарика по уже заданной параболе
Здравствуйте , помогите пожалуйста сделать движение шарика по уже заданной параболе! с помощью...

Отобразить движение шарика в реальном времени.
Шарик диаметром 20 пикселей падает ускоренно сверху вниз с начальной скоростью, которая выбирается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.