IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Моделирование системы маятников
Lamer
сообщение 15.04.2006 22:06
Сообщение #1


Гость






Народ подскажите с чего вообще начать решать..n маятников совершают колебания...учитывать соударение и затухание....может кто нибудь сталкивался с этой задачей раньше или знает где можно найти какую нибудь литературу
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
klem4
сообщение 22.04.2006 7:57
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Ну ты бы чтоли выложил что у тебя есть ... в общем вот я набросал, грубовато, но доработать можно smile.gif

program Pendulum;

{$N+}

uses crt, graph;

const

x2 : word = 0;
y2 : word = 0;

type

TPendulum = object
public

constructor Init(xC, yC, len, radius : word; min, max : single);
destructor Done;

function GetX(a : single) : word;
function GetY(a : single) : word;
function GetAngle : single;

procedure Show;
procedure Hide;
procedure Next;

private

x0, y0 : word;
l, r, x, y, c : word;
minAngle, maxAngle, angle : single;
end;

constructor TPendulum.Init(xC, yC, len, radius : word; min, max : single);
begin

x2 := GetMaxX div 2;
y2 := GetMaxY div 2;

minAngle := min;
maxAngle := max;
angle := minAngle;

l := len;
r := radius;
c := 5;

if (x = 0) and (y = 0) then begin
x0 := x2;
y0 := 0;
end else begin
x0 := xC;
y0 := yC;
end;

end;

destructor TPendulum.Done;
begin
writeln('Bye ...');
end;

function TPendulum.GetX(a : single) : word;
begin
GetX := round(l * cos(a)) + x0;
end;

function TPendulum.GetY(a : single) : word;
begin
GetY := round(l * sin(a)) + y0;
end;

function TPendulum.GetAngle : single;
const
step : single = 0.5;
begin
if (angle > maxAngle) or (angle < minAngle) then begin
sound(7);
nosound;
step := -step;
if angle > maxAngle then
minAngle := minAngle + c
else
maxAngle := maxAngle - c;
end;

angle := angle + step;
GetAngle := angle * PI / 180;
end;

procedure TPendulum.Next;
var
a : single;
begin
a := GetAngle;
x := GetX(a);
y := GetY(a);
end;

procedure TPendulum.Show;
begin
SetColor(White);
line(x0, y0, x, y);
circle(x, y, r);
end;

procedure TPendulum.Hide;
begin
SetColor(Black);
line(x0, y0, x, y);
circle(x, y, r);
end;

var
gd, gm : integer;
p : TPendulum;
begin

gd := detect;
initgraph(gd, gm, 'c:\bp7\bgi');

p.Init(GetMaxX div 2, GetMaxY div 2, 200, 20, 45, 135);

repeat
p.Hide;
p.Next;
p.Show;
delay(10);
until keypressed or (p.minAngle > p.maxAngle);

repeat until keypressed;

p.Done;
CloseGraph;
end.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 24.06.2025 22:58
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"