Имитация движения объектов в Delphi

Ответить
Stalkon
Сообщения: 1
Зарегистрирован: 08 дек 2008, 21:13

Итак, есть задача смоделировать движение квадрата и овала по прямой. Овал находится в квадрате, и катится с ним в одну сторону. Я написал процедуру, в которую передаются параметры объектов, но ошибся где-то в алгоритме, и овал постоянно выкатывается на внешнюю сторону квадрата и катится по ней.

Код: Выделить всё

procedure TForm1.PObjCollision(var Base:LineObject; Sec:LineObject);
var  i,ii:integer; max:real; //max - дальняя сталкивающаяся точка по движению
begin
 if Base.ObjAng>0 then max:=-100;
 if Base.ObjAng<0 then max:=Image1.Width;

 for i:=1 to Base.ObjLimDot do
 for ii:=1 to Sec.ObjLimDot do begin
  if ((round(Base.Obj[i].x)=round(Sec.Obj[ii].x))and(Base.Obj[i].y>=Sec.Obj[ii].y)) then begin
  if Base.ObjAng>0 then
  if Base.Obj[i].x>max then begin   //приоритет дальн точ  (по правой)
   max:=Base.Obj[i].x;
   Base.ObjRotateDot:=i;
                     end;
  if Base.ObjAng<0 then
  if Base.Obj[i].x<max then begin   //приоритет дальн точ  (по левой)
   max:=Base.Obj[i].x;
   Base.ObjRotateDot:=i;
                     end;
                                                               end;
                       end;
end;
Ответить