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

Физический маятник

02.05.2012, 02:10. Показов 4150. Ответов 10
Метки нет (Все метки)

помогите пожалуйста, я не силён в Delphi...мне нужно запрограммировать физический маятник... нашел код программы но реализовать не получилось...думаю для умеющего это работы на пару минут...буду очень благодарен за помощь...вот код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
unit unit1;
 
interface
 
uses
windows, sysutils, classes, graphics, forms,
stdctrls, extctrls, actnlist, controls, menus, appevnts;
 
type
tform1 = class(tform)
groupbox1: tgroupbox;
label1: tlabel;
u_edit: tedit;
label2: tlabel;
l_edit: tedit;
label3: tlabel;
g_edit: tedit;
image: timage;
button1: tbutton;
button2: tbutton;
label4: tlabel;
t_edit: tedit;
image1: timage;
timer1: ttimer;
actionlist1: tactionlist;
startacnt: taction;
stopacnt: taction;
log: tmemo;
procedure startacntexecute(sender: tobject);
procedure startacntupdate(sender: tobject);
procedure stopacntexecute(sender: tobject);
procedure stopacntupdate(sender: tobject);
procedure timer1timer(sender: tobject);
private
u,l,g,t,a:extended;
dt0:dword;
public
{ public declarations }
end;
 
var
form1: tform1;
 
implementation
uses sysconst;
{$r *.dfm}
 
procedure tform1.startacntexecute(sender: tobject);
begin
u:=strtofloat(u_edit.text);
l:=strtofloat(l_edit.text);
g:=strtofloat(g_edit.text);
a:=l*sin(u*pi/180);
t:=2*pi*sqrt(l/g);
dt0:=gettickcount;
t_edit.text:=format('%f',[t]);
doublebuffered:=true;
timer1.enabled:=true;
end;
 
procedure tform1.startacntupdate(sender: tobject);
begin
taction(sender).enabled:=not timer1.enabled;
end;
 
procedure tform1.stopacntexecute(sender: tobject);
begin
timer1.enabled:=false;
end;
 
procedure tform1.stopacntupdate(sender: tobject);
begin
taction(sender).enabled:=timer1.enabled;
end;
 
procedure tform1.timer1timer(sender: tobject);
const pr:integer=7;
var
dt,x,y,k:extended;
px,py,cx,cy:integer;
begin
if not timer1.enabled then exit;
//Математика маятника
dt:=(gettickcount-dt0)/1000;
x:=a*cos(dt/t*2*pi);
y:=sqrt(l*l-x*x);
 
log.lines[0]:='x/y: '+format('%f',[x])+'/'+format('%f',[y]);
 
//Перевод в координаты отрисовки
k:=trunc(image.height*0.9);
cx:=image.width div 2;
cy:=20;
px:=trunc(x*k/l)+cx;
py:=trunc(y*k/l)+cy;
 
//Отрисовка
with image.canvas do
begin
brush.color:=rgb(0,0,0);
pen.color:=rgb(255,255,255);
fillrect(cliprect);
moveto(cx,cy);
lineto(px,py);
brush.color:=pen.color;
ellipse(px-pr,py-pr,px+pr,py+pr);
end;
end;
 
end.



прошу воплотить его в программе...заранее спасибо.

Добавлено через 1 час 30 минут
поможет кто???
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2012, 02:10
Ответы с готовыми решениями:

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

Маятник Максвелла
Нужно реализовать движение маятника Максвелла. Непонятно как реализовать само движение. Ставим...

Смоделировать физический процесс
Такая задача по компьютерному моделированию: может кто знаком с физическим процессом?...

Запретить перенос приложения на другой (физический) диск путём клонирования
Написал программу на Delphi7, хочу сделать чтобы её посли установки не могли перенести на другой...

10
0 / 0 / 1
Регистрация: 27.10.2011
Сообщений: 41
02.05.2012, 11:08 2
Delphi
1
2
3
u:=strtofloat(u_edit.text);
l:=strtofloat(l_edit.text);
g:=strtofloat(g_edit.text);
Это что за параметры??
0
0 / 0 / 0
Регистрация: 17.03.2011
Сообщений: 16
02.05.2012, 18:12  [ТС] 3
Цитата Сообщение от Andy Jr. Посмотреть сообщение
Delphi
1
2
3
u:=strtofloat(u_edit.text);
l:=strtofloat(l_edit.text);
g:=strtofloat(g_edit.text);
Это что за параметры??
Сдесь есть все расписано.

Добавлено через 2 часа 58 минут
напишет кто???

Добавлено через 1 час 40 минут
помогите пожалуйста, мне завтра нужно это сдать....

Добавлено через 32 минуты
как понимаю помощи можно не ждать?? здесь ведь не так много работы...просто набросайте так чтобы работало...пожалуйста...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31243 / 20423 / 7960
Регистрация: 22.10.2011
Сообщений: 35,452
Записей в блоге: 6
02.05.2012, 21:05 4
Ну вот, работает (параметры сам подберешь, я выставил все в 1-цу)
Миниатюры
Физический маятник  
Вложения
Тип файла: 7z ph_m.7z (4.3 Кб, 381 просмотров)
1
0 / 0 / 0
Регистрация: 17.03.2011
Сообщений: 16
02.05.2012, 21:10  [ТС] 5
выбивает ошибку...вот:
Миниатюры
Физический маятник  
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31243 / 20423 / 7960
Регистрация: 22.10.2011
Сообщений: 35,452
Записей в блоге: 6
02.05.2012, 22:03 6
Где вы эти глючные версии Дельфи понабрали? Все там нормально, проект открывается и нормально работает в D2009/D2010/XE/XE2. На старых версиях, разумеется, работать не будет. В следующий раз предупреждай, что твоя версия видела еще динозавров в юности... Знал бы - не брался б вообще...
1
0 / 0 / 0
Регистрация: 17.03.2011
Сообщений: 16
02.05.2012, 22:07  [ТС] 7
спасибо огромное...всё работает.
0
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 73
25.05.2016, 05:07 8
кто-нибудь может пожалуйста подсказать как сделать анимацию более плавной? Просто тут анимация - как смена картинки через определенное время на определенное расстояние, выглядит как-будто тормозит, я пытался это исправить, но не смог.
0
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 73
27.05.2016, 14:19 9
совсем забыл (если кому пригодится), там просто у таймера на главной форме надо свойство КОл-ва милесекунд поменять, уменьшить с 1000, например, до 10
0
586 / 453 / 147
Регистрация: 09.12.2013
Сообщений: 2,385
Записей в блоге: 2
27.05.2016, 14:30 10
Не стоит ставить меньше 40.
0
0 / 0 / 0
Регистрация: 29.03.2017
Сообщений: 2
29.03.2017, 18:07 11
volvo, помоги с маятником в делфи
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2017, 18:07

Физический маятник
Условие во вложении, найти нужно минимальную скорость шарика, при которой маятник после удара,...

Математический/физический маятник
Привет не только любителям физики, но и программирования) помогите пожалуйста решить задачу: в...

Маятник
Мы выбираем ускорение, длину маятника и его угол отклонения от положения равновесия(от нижней...

Маятник
Нужно вывести рисунок в компоненте Timer(я не знаю каким это образом вообще делать).Нужно что бы...


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

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

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