Рисование окружности в free pascal

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Re: Рисование окружности в free pascal

Сообщение Кирилл » 10.02.2009 21:52:09

Вообще хотел сделать модель движения молекул,
примерно как в программке.
Теперь буду думать об возможности столкновения шаров. :?

Еще хотел спросить о файле с расширением *.0 .какую функцию он выполняет?

Чувствую, что на некоторое время этот раздел форума будет моим.
Вложения
pack.zip
Вот и сама программка.
(43.53 КБ) Скачиваний: 546
Аватара пользователя
Кирилл
незнакомец
 
Сообщения: 9
Зарегистрирован: 08.02.2009 12:04:22
Откуда: Удмуртия

Re: Рисование окружности в free pascal

Сообщение FedeX » 11.02.2009 12:01:22

Симпотишно 8)
Насчёт о-файлов - по-простому это промежуточные скампилированные, но ещё не слинкованные части программы. Тоесть каждый модуль сначала компилируеться вот в такой "объектный" файл, а затем из таких файлов линкер собирает конечную программу. Тоесть нет необходимости распространять их с программой :wink:

Насчёт столкновения шаров вот можеш взять примерную такую функцию (тоже из одного старого эксперимента - вот совпадение :D ):
Код: Выделить всё
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, то поидее получится то что ты хочеш...
А вот сам эксперимент (как всё должно выглядеть) в аттаче (код опять весьма муторный, но думаю общий принцип будет понятен):
Вложения
exp17_collides.zip
(102.6 КБ) Скачиваний: 532
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: Рисование окружности в free pascal

Сообщение Кирилл » 11.02.2009 17:02:03

Для начала попробую без всяких направлений,скоростей и без учета радиусов 8) .
Просто чтоб менялось их направление. А потом уж можно и поэксперементировать :D .
Аватара пользователя
Кирилл
незнакомец
 
Сообщения: 9
Зарегистрирован: 08.02.2009 12:04:22
Откуда: Удмуртия

Re: Рисование окружности в free pascal

Сообщение nordlink19 » 23.12.2009 19:25:05

а можешь дать исходник программы :D
nordlink19
новенький
 
Сообщения: 13
Зарегистрирован: 23.12.2009 19:03:05

Re: Рисование окружности в free pascal

Сообщение v-t-l » 24.12.2009 13:56:46

Sergei I. Gorelkin писал(а):Ф-ция random в FPC - очень хороша :)

Только надо не забывать вызвать разок вначале Randomize, а то программа при каждом запуске будет выдавать одни и те же последовательности "случайных" чисел :D
v-t-l
энтузиаст
 
Сообщения: 733
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Рисование окружности в free pascal

Сообщение queenman83 » 15.02.2010 21:02:19

А не могли бы сказать, как мне в консоли запустить эту программу? Консоль вроде бы графику не поддерживает. Как в линуксе посмотреть графичекий вывод программы?
queenman83
незнакомец
 
Сообщения: 5
Зарегистрирован: 13.02.2010 15:48:48

Пред.

Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

Рейтинг@Mail.ru