Имитация движения объектов в Delphi
Добавлено: 16 дек 2008, 00:46
Итак, есть задача смоделировать движение квадрата и овала по прямой. Овал находится в квадрате, и катится с ним в одну сторону. Я написал процедуру, в которую передаются параметры объектов, но ошибся где-то в алгоритме, и овал постоянно выкатывается на внешнюю сторону квадрата и катится по ней.
Код: Выделить всё
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;