Страница 2 из 2
Re: Рисование окружности в free pascal
Добавлено: 10.02.2009 20:52:09
Кирилл
Вообще хотел сделать модель движения молекул,
примерно как в программке.
Теперь буду думать об возможности столкновения шаров.
Еще хотел спросить о файле с расширением *.0 .какую функцию он выполняет?
Чувствую, что на некоторое время этот раздел форума будет моим.
Re: Рисование окружности в free pascal
Добавлено: 11.02.2009 11:01:22
FedeX
Симпотишно
Насчёт о-файлов - по-простому это промежуточные скампилированные, но ещё не слинкованные части программы. Тоесть каждый модуль сначала компилируеться вот в такой "объектный" файл, а затем из таких файлов линкер собирает конечную программу. Тоесть нет необходимости распространять их с программой
Насчёт столкновения шаров вот можеш взять примерную такую функцию (тоже из одного старого эксперимента - вот совпадение

):
Код: Выделить всё
type
TSome2DVector=record
x,y:integer;
end;
function phxlCollideCircles(x1,y1,x2,y2,r1,r2:integer;out vec:TSome2DVector):boolean;
var dx,dy,real_dist,ddist:integer;
begin
dx:=x1-x2;
dy:=y1-y2;
real_dist:=round(sqrt(dx*dx+dy*dy));
result:=real_dist<(r1+r2);
if real_dist>0.00001 then
begin
dx:=round(dx/real_dist);
dy:=round(dy/real_dist);
end;
ddist:=real_dist-(r1+r2);
vec.x:=dx*ddist;
vec.y:=dy*ddist;
end;
В неё надо передавать координаты центров двух кругов (x1,y1,x2,y2) и ихние радиусы (r1,r2). В итоге она возвращает true если круги накладываються один на другой, а в выходной нараметр vec записывает вектор силы отталкивания, который будет действовать на круги. Если сделать каждый круг объектом (или хотябы record-ом) с такими полями как скорость по х и скорость по у, и в каждом кадре анимации проверять их все на столкновения и изменять эти поля в соответсвии с выходным параметром vec, то поидее получится то что ты хочеш...
А вот сам эксперимент (как всё должно выглядеть) в аттаче (код опять весьма муторный, но думаю общий принцип будет понятен):
Re: Рисование окружности в free pascal
Добавлено: 11.02.2009 16:02:03
Кирилл
Для начала попробую без всяких направлений,скоростей и без учета радиусов

.
Просто чтоб менялось их направление. А потом уж можно и поэксперементировать

.
Re: Рисование окружности в free pascal
Добавлено: 23.12.2009 18:25:05
nordlink19
а можешь дать исходник программы

Re: Рисование окружности в free pascal
Добавлено: 24.12.2009 12:56:46
v-t-l
Sergei I. Gorelkin писал(а):Ф-ция random в FPC - очень хороша

Только надо не забывать вызвать разок вначале Randomize, а то программа при каждом запуске будет выдавать одни и те же последовательности "случайных" чисел

Re: Рисование окружности в free pascal
Добавлено: 15.02.2010 20:02:19
queenman83
А не могли бы сказать, как мне в консоли запустить эту программу? Консоль вроде бы графику не поддерживает. Как в линуксе посмотреть графичекий вывод программы?