MoveOn -> MoveBy
This commit is contained in:
parent
cf7e002e92
commit
562699d3fa
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "7";
|
||||
public const string Build = "1";
|
||||
public const string Revision = "2743";
|
||||
public const string Revision = "2744";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%MINOR%=7
|
||||
%REVISION%=2743
|
||||
%COREVERSION%=1
|
||||
%REVISION%=2744
|
||||
%MINOR%=7
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
|
|
@ -3,9 +3,6 @@ uses Graph3D;
|
|||
begin
|
||||
Window.Title := '3D-ďđčěčňčâű';
|
||||
|
||||
//var a := Any(0,0,0,Colors.Red);
|
||||
//a.MoveOn(-5,2,0);
|
||||
|
||||
var rr := Rectangle3D(-3.5,-2,0,3,2,Colors.MediumPurple);
|
||||
rr.Rotate(v3d(0,1,0),30);
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ begin
|
|||
a[yy,xx] := Self;
|
||||
var dx := xx - x;
|
||||
var dy := yy - y;
|
||||
f.MoveOn(-dx*2,-dy*2,0);
|
||||
f.MoveBy(-dx*2,-dy*2,0);
|
||||
(x,y) := (xx,yy);
|
||||
Result := Self;
|
||||
end;
|
||||
|
|
@ -58,7 +58,7 @@ function ChessFigure.AnimMoveTo(xx,yy: integer): ChessFigure;
|
|||
begin
|
||||
var dx := xx - x;
|
||||
var dy := yy - y;
|
||||
f.AnimMoveOn(-dx*2,-dy*2,0,delay/1000).WhenCompleted(procedure -> begin
|
||||
f.AnimMoveBy(-dx*2,-dy*2,0,delay/1000).WhenCompleted(procedure -> begin
|
||||
a[y,x] := nil;
|
||||
if a[yy,xx]<>nil then
|
||||
a[yy,xx].Destroy;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
uses Graph3D;
|
||||
// îøèáêà!
|
||||
uses Graph3D;
|
||||
// ошибка!
|
||||
begin
|
||||
var b := Box(0,0,0,3,1,2,Colors.Blue);
|
||||
var s := Sphere(0,0,2,1,Colors.Green);
|
||||
|
|
@ -8,12 +8,7 @@ begin
|
|||
|
||||
var g := Group(b,s);
|
||||
var g1 := Group(b1,s1);
|
||||
g1.MoveOnY(3);
|
||||
g.Add(g1[0]);// îí äîëæåí îòñîåäèíèòüñÿ îò g!
|
||||
b1.MoveOnY(3);
|
||||
|
||||
{Print(g.l.Count);
|
||||
Print(g1.l.Count);
|
||||
Print(g[2].Position);}
|
||||
//b1.MoveOnZ(3);
|
||||
g1.MoveByY(3);
|
||||
g.AddChild(g1[0]);// он должен отсоединиться от g!
|
||||
b1.MoveByY(3);
|
||||
end.
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
begin
|
||||
var ss := Cube(0,0,0,1.5,Colors.Red);
|
||||
var anim := ss.AnimMoveOnX(10).AutoReverse.Forever.AccelerationRatio(0.5,0.5);
|
||||
var anim := ss.AnimMoveByX(10).AutoReverse.Forever.AccelerationRatio(0.5,0.5);
|
||||
//var anim := ss.AnimScale(3).Forever.AutoReverse;
|
||||
//var anim := ss.AnimRotate(OrtZ,360).Forever.AutoReverse;
|
||||
//var anim := ss.AnimRotateAt(OrtZ,360,P3D(3,0,0),2).Forever;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,6 @@
|
|||
|
||||
begin
|
||||
var bb := ArrGen(15,i -> Object3D(Box(0.5*i,0,0,0.1,6,2,RandomColor)));
|
||||
var g := Group(bb).MoveOnX(-5);
|
||||
var g := Group(bb).MoveByX(-5);
|
||||
g.AnimRotateAt(ortZ,360,P3D(-1,0,0),2).Forever.Begin;
|
||||
end.
|
||||
|
|
@ -3,8 +3,8 @@ uses Graph3D;
|
|||
begin
|
||||
var s := Box(0,0,0,3,1,2,Colors.Blue);
|
||||
var an := Animate.Sequence(
|
||||
s.AnimMoveOnY(5),
|
||||
s.AnimMoveOnX(5)
|
||||
s.AnimMoveByY(5),
|
||||
s.AnimMoveByX(5)
|
||||
);
|
||||
an.Begin;
|
||||
end.
|
||||
|
|
@ -4,6 +4,6 @@ begin
|
|||
var jmp := 0.3;
|
||||
var time := 0.5;
|
||||
var c := Box(0,0,2,1,2,4,Colors.Green);
|
||||
var a := c.AnimMoveOnZ(-0.4,time).AutoReverse.Forever * c.AnimScaleZ(0.95,time).AutoReverse.Forever * c.AnimMoveOnX(1*10,time*10);
|
||||
var a := c.AnimMoveByZ(-0.4,time).AutoReverse.Forever * c.AnimScaleZ(0.95,time).AutoReverse.Forever * c.AnimMoveByX(1*10,time*10);
|
||||
a.Begin;
|
||||
end.
|
||||
|
|
@ -11,7 +11,7 @@ begin
|
|||
var ss := Sphere(0,0,0,1,Colors.Blue);
|
||||
Sphere(0,0,0,2,DiffuseMaterial(Colors.Yellow)+SpecularMaterial(32));
|
||||
var g := Group(s,ss);
|
||||
g.MoveOn(-7,0,0);
|
||||
g.MoveBy(-7,0,0);
|
||||
var anim := s.AnimRotateAt(OrtZ,360*100,P3D(-2,0,0),2*100)
|
||||
* g.AnimRotateAt(OrtZ,360*100,P3D(7,0,0),10*100)
|
||||
;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
uses Graph3D;
|
||||
uses Graph3D;
|
||||
|
||||
begin
|
||||
var s := Sphere(Origin,1,Colors.Green);
|
||||
s.AnimMoveOnX(5).WhenCompleted(procedure->s.AnimMoveOnY(5).Begin).Begin;
|
||||
s.AnimMoveByX(5).WhenCompleted(procedure->s.AnimMoveByY(5).Begin).Begin;
|
||||
var s1 := s.Clone;
|
||||
s1.Color := Colors.Blue;
|
||||
s1.AnimMoveOnX(-5).WhenCompleted(procedure->s1.AnimMoveOnY(-5).Begin).Begin;
|
||||
s1.AnimMoveByX(-5).WhenCompleted(procedure->s1.AnimMoveByY(-5).Begin).Begin;
|
||||
end.
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
uses Graph3D;
|
||||
uses Graph3D;
|
||||
|
||||
begin
|
||||
var b := Box(0,0,0,3,1,2,Colors.Blue);
|
||||
var s := Sphere(0,0,2,1,Colors.Green);
|
||||
|
||||
var g := Group(b,s);
|
||||
g.MoveOnY(-4);
|
||||
g.MoveByY(-4);
|
||||
var g1 := g.Clone;
|
||||
g.MoveOnY(3);
|
||||
g.MoveByY(3);
|
||||
var gg := Group(g,g1);
|
||||
gg.MoveOnX(3);
|
||||
gg.MoveByX(3);
|
||||
end.
|
||||
|
|
@ -10,7 +10,7 @@ begin
|
|||
var g1 := Group(b1,s1);
|
||||
g.AddChild(g1[0]);// он должен отсоединиться от g!
|
||||
Sleep(1000);
|
||||
g.MoveOnX(3);
|
||||
g.MoveByX(3);
|
||||
Sleep(1000);
|
||||
g1.MoveOnY(4);
|
||||
g1.MoveByY(4);
|
||||
end.
|
||||
|
|
@ -4,6 +4,6 @@ uses Graph3D;
|
|||
begin
|
||||
var b := Box(0,0,1,1,3,2,RandomColor);
|
||||
var b1 := b.Clone;
|
||||
b1.MoveOn(3,0,0);
|
||||
b1.MoveBy(3,0,0);
|
||||
b1.AnimRotate(OrtZ,90).Begin;
|
||||
end.
|
||||
|
|
@ -7,9 +7,9 @@ begin
|
|||
s.AddChild(c);
|
||||
c.AddChild(p);
|
||||
var s1 := s.Clone;
|
||||
s1.MoveOnX(2);
|
||||
s1.MoveByX(2);
|
||||
var g := Group(s,s1);
|
||||
var g1 := g.Clone;
|
||||
g.MoveOnY(-4);
|
||||
g.MoveByY(-4);
|
||||
s1.AnimRotateAt(OrtZ,360,P3D(-2,0,0)).Begin;
|
||||
end.
|
||||
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
begin
|
||||
var b := Box(0,0,0,3,1,2,Colors.Blue);
|
||||
var b1 := b.Clone.RotateAt(OrtZ,90,P3D(1.5,0,0)).MoveOnX(-0.5);
|
||||
b1 := b.Clone.RotateAt(OrtZ,-90,P3D(-1.5,0,0)).MoveOnX(0.5);
|
||||
var b1 := b.Clone.RotateAt(OrtZ,90,P3D(1.5,0,0)).MoveByX(-0.5);
|
||||
b1 := b.Clone.RotateAt(OrtZ,-90,P3D(-1.5,0,0)).MoveByX(0.5);
|
||||
View3D.BackgroundColor := Colors.Black;
|
||||
View3D.ShowGridLines := False;
|
||||
end.
|
||||
|
|
@ -13,6 +13,6 @@ begin
|
|||
Inc(m);
|
||||
end;
|
||||
var p1 := p.Clone;
|
||||
p1.MoveOnX(-5);
|
||||
p1.MoveByX(-5);
|
||||
p1.AnimRotate(OrtZ,360,10).Forever.Begin;
|
||||
end.
|
||||
|
|
@ -17,7 +17,7 @@ begin
|
|||
//end);
|
||||
|
||||
foreach var x in l do
|
||||
x.AnimMoveOn(Random,Random,Random).AutoReverse.Forever.Begin;
|
||||
x.AnimMoveBy(Random,Random,Random).AutoReverse.Forever.Begin;
|
||||
|
||||
//Print(Milliseconds);
|
||||
end.
|
||||
|
|
@ -5,10 +5,10 @@ begin
|
|||
var s := Box(0,0,0,3,1,2,Colors.Blue);
|
||||
OnKeyDown := k ->
|
||||
case k of
|
||||
Key.Left: s.MoveOn(1,0,0);
|
||||
Key.Right: s.MoveOn(-1,0,0);
|
||||
Key.Up: s.MoveOn(0,-1,0);
|
||||
Key.Down: s.MoveOn(0,1,0);
|
||||
Key.Left: s.MoveBy(1,0,0);
|
||||
Key.Right: s.MoveBy(-1,0,0);
|
||||
Key.Up: s.MoveBy(0,-1,0);
|
||||
Key.Down: s.MoveBy(0,1,0);
|
||||
Key.X: s.Rotate(OrtX,10);
|
||||
Key.Y: s.Rotate(OrtY,10);
|
||||
Key.Z: s.Rotate(OrtZ,10);
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ begin
|
|||
loop N-1 do
|
||||
begin
|
||||
c := c.Clone;
|
||||
c.MoveOnX(-1.5);
|
||||
c.MoveByX(-1.5);
|
||||
if c is ObjectWithMaterial3D then
|
||||
(c as ObjectWithMaterial3D).Color := RandomColor;
|
||||
g.AddChild(c);
|
||||
|
|
@ -21,11 +21,11 @@ begin
|
|||
var g := MultipleClones(c,10);
|
||||
var gp := MultipleClones(c1,10);
|
||||
var gg := Group(g,b,gp);
|
||||
var g1 := gg.Clone.MoveOnY(6);
|
||||
var g2 := gg.Clone.MoveOnY(-6);
|
||||
var g1 := gg.Clone.MoveByY(6);
|
||||
var g2 := gg.Clone.MoveByY(-6);
|
||||
gg.Rotate(OrtZ,90);
|
||||
var g3 := gg.Clone.MoveOnX(-6);
|
||||
gg.MoveOnX(6);
|
||||
var g3 := gg.Clone.MoveByX(-6);
|
||||
gg.MoveByX(6);
|
||||
var ggg := Group(gg,g1,g2,g3);
|
||||
ggg.Save('Замок.xaml');
|
||||
//ggg.AnimRotate(OrtZ,360,10).Forever.begin;
|
||||
|
|
|
|||
|
|
@ -10,10 +10,10 @@ begin
|
|||
|
||||
OnKeyDown := k -> begin
|
||||
case k of
|
||||
Key.Left: c.MoveOn(-2,0);
|
||||
Key.Right: c.MoveOn(2,0);
|
||||
Key.Up: c.MoveOn(0,-2);
|
||||
Key.Down: c.MoveOn(0,2);
|
||||
Key.Left: c.MoveBy(-2,0);
|
||||
Key.Right: c.MoveBy(2,0);
|
||||
Key.Up: c.MoveBy(0,-2);
|
||||
Key.Down: c.MoveBy(0,2);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
|
@ -21,8 +21,8 @@ begin
|
|||
var r := Button('Right');
|
||||
var u := Button('Up');
|
||||
var d := Button('Down');
|
||||
l.Click := ()->c.MoveOn(-2,0);
|
||||
r.Click := ()->c.MoveOn(2,0);
|
||||
u.Click := ()->c.MoveOn(0,-2);
|
||||
d.Click := ()->c.MoveOn(0,2);
|
||||
l.Click := ()->c.MoveBy(-2,0);
|
||||
r.Click := ()->c.MoveBy(2,0);
|
||||
u.Click := ()->c.MoveBy(0,-2);
|
||||
d.Click := ()->c.MoveBy(0,2);
|
||||
end.
|
||||
|
|
@ -5,7 +5,7 @@ uses WPFObjects;
|
|||
procedure MoveAll(a,b: integer);
|
||||
begin
|
||||
for var j:=0 to Objects.Count-1 do
|
||||
Objects[j].moveOn(a,b);
|
||||
Objects[j].moveBy(a,b);
|
||||
end;
|
||||
|
||||
begin
|
||||
|
|
@ -33,7 +33,7 @@ begin
|
|||
while True do
|
||||
begin
|
||||
for var j:=0 to Objects.Count-1 do
|
||||
Objects[j].MoveOn(Random(-1,1),Random(-1,1));
|
||||
Objects[j].MoveBy(Random(-1,1),Random(-1,1));
|
||||
Sleep(10);
|
||||
end;
|
||||
end.
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ begin
|
|||
|
||||
loop 900 do
|
||||
begin
|
||||
Destroyer.MoveOn(1,0);
|
||||
Destroyer.MoveBy(1,0);
|
||||
CheckPulyaIntersects;
|
||||
Sleep(1);
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ begin
|
|||
foreach var o in Objects.Seq do
|
||||
match o with
|
||||
CircleWPF(c): c.Radius += 10;
|
||||
EllipseWPF(e): e.AnimMoveOn(Random(-50,50),Random(-50,50),1);
|
||||
EllipseWPF(e): e.AnimMoveBy(Random(-50,50),Random(-50,50),1);
|
||||
RegularPolygonWPF(r) when r.Count<6: r.SetBorder;
|
||||
end
|
||||
end.
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
type
|
||||
Point = auto class
|
||||
x,y: integer;
|
||||
procedure MoveOn(dx,dy: integer) := (x,y) := (x+dx,y+dy);
|
||||
procedure MoveBy(dx,dy: integer) := (x,y) := (x+dx,y+dy);
|
||||
function Distance(p: Point) := sqrt(sqr(x-p.x)+sqr(y-p.y));
|
||||
class function operator implicit(t: (integer,integer)): Point := new Point(t[0],t[1]);
|
||||
end;
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ begin
|
|||
end;
|
||||
|
||||
/// Перемещает шарик на вектор (dx,dy)
|
||||
procedure MoveOn(dx,dy: integer);
|
||||
procedure MoveBy(dx,dy: integer);
|
||||
begin
|
||||
MoveTo(ax+dx,ay+dy);
|
||||
end;
|
||||
|
|
@ -140,6 +140,6 @@ BEGIN
|
|||
Delay(20);
|
||||
if FilledInFront then
|
||||
ChangeDirection;
|
||||
MoveOn(vx,vy);
|
||||
MoveBy(vx,vy);
|
||||
until KeyPressed;
|
||||
END.
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.7.1.2743
|
||||
3.7.1.2744
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.7.1.2743'
|
||||
!define VERSION '3.7.1.2744'
|
||||
|
|
|
|||
|
|
@ -376,8 +376,12 @@ procedure MoveRel(dx,dy: real);
|
|||
/// Рисует отрезок от текущей позиции до точки, смещённой на вектор (dx,dy). Текущая позиция переносится в новую точку
|
||||
procedure LineRel(dx,dy: real);
|
||||
/// Перемещает текущую позицию рисования на вектор (dx,dy)
|
||||
procedure MoveOn(dx,dy: real);
|
||||
procedure MoveBy(dx,dy: real);
|
||||
/// Рисует отрезок от текущей позиции до точки, смещённой на вектор (dx,dy). Текущая позиция переносится в новую точку
|
||||
procedure LineBy(dx,dy: real);
|
||||
///--
|
||||
procedure MoveOn(dx,dy: real);
|
||||
///--
|
||||
procedure LineOn(dx,dy: real);
|
||||
|
||||
/// Рисует ломаную, заданную массивом точек
|
||||
|
|
@ -1206,6 +1210,8 @@ procedure MoveRel(dx,dy: real) := (Pen.fx,Pen.fy) := (Pen.fx + dx, Pen.fy + dy);
|
|||
procedure LineRel(dx,dy: real) := LineTo(Pen.fx + dx, Pen.fy + dy);
|
||||
procedure MoveOn(dx,dy: real) := MoveRel(dx,dy);
|
||||
procedure LineOn(dx,dy: real) := LineRel(dx,dy);
|
||||
procedure MoveBy(dx,dy: real) := MoveRel(dx,dy);
|
||||
procedure LineBy(dx,dy: real) := LineRel(dx,dy);
|
||||
|
||||
procedure PolyLine(points: array of Point) := InvokeVisual(PolyLineP,points);
|
||||
procedure PolyLine(points: array of Point; c: GColor) := InvokeVisual(PolyLinePC,points,c);
|
||||
|
|
|
|||
|
|
@ -289,14 +289,18 @@ type
|
|||
procedure MoveForward(r: real);
|
||||
begin
|
||||
var a := Pi/180*(90-RotateAngle);
|
||||
MoveOn(r*Cos(a),-r*Sin(a));
|
||||
MoveBy(r*Cos(a),-r*Sin(a));
|
||||
end;
|
||||
/// Перемещает графический объект на вектор (a,b)
|
||||
procedure MoveOn(a,b: real) := MoveTo(Left+a,Top+b);
|
||||
procedure MoveBy(a,b: real) := MoveTo(Left+a,Top+b);
|
||||
/// Перемещает графический объект на вектор (a,b)
|
||||
procedure MoveBy(v: (real,real)) := MoveTo(Left+v[0],Top+v[1]);
|
||||
///--
|
||||
procedure MoveOn(a,b: real) := MoveTo(Left+a,Top+b);
|
||||
///--
|
||||
procedure MoveOn(v: (real,real)) := MoveTo(Left+v[0],Top+v[1]);
|
||||
/// Перемещает графический объект на вектор (dx,dy)
|
||||
procedure Move; virtual := MoveOn(dx,dy);
|
||||
procedure Move; virtual := MoveBy(dx,dy);
|
||||
/// Перемещает графический объект вдоль вектора Direction со скоростью Velocity за время dt
|
||||
procedure MoveTime(dt: real); virtual;
|
||||
begin
|
||||
|
|
@ -305,7 +309,7 @@ type
|
|||
exit;
|
||||
var dvx := dx/len*Velocity;
|
||||
var dvy := dy/len*Velocity;
|
||||
MoveOn(dvx*dt,dvy*dt);
|
||||
MoveBy(dvx*dt,dvy*dt);
|
||||
end;
|
||||
/// Поворачивает графический объект по часовой стрелке на угол a
|
||||
procedure Rotate(a: real) := RotateAngle += a;
|
||||
|
|
@ -330,7 +334,7 @@ type
|
|||
procedure Scale(r: real) := ScaleFactor *= r;
|
||||
|
||||
private
|
||||
procedure AnimMoveOnP(a,b,sec: real);
|
||||
procedure AnimMoveByP(a,b,sec: real);
|
||||
begin
|
||||
var ax := new DoubleAnimation(a + transl.X, System.TimeSpan.FromSeconds(sec));
|
||||
var ay := new DoubleAnimation(b + transl.Y, System.TimeSpan.FromSeconds(sec));
|
||||
|
|
@ -365,12 +369,14 @@ type
|
|||
end;
|
||||
public
|
||||
/// Анимирует перемещение графического объекта на вектор (a,b) в течение sec секунд
|
||||
procedure AnimMoveOn(a,b: real; sec: real := 1) := Invoke(AnimMoveOnP,a,b,sec);
|
||||
procedure AnimMoveBy(a,b: real; sec: real := 1) := Invoke(AnimMoveByP,a,b,sec);
|
||||
///--
|
||||
procedure AnimMoveOn(a,b: real; sec: real := 1) := Invoke(AnimMoveByP,a,b,sec);
|
||||
/// Анимирует перемещение графического объекта в направлении RotateAngle (вверх при RotateAngle=0)
|
||||
procedure AnimMoveForward(r: real);
|
||||
begin
|
||||
var a := Pi/180*(90-RotateAngle);
|
||||
AnimMoveOn(r*Cos(a),-r*Sin(a));
|
||||
AnimMoveBy(r*Cos(a),-r*Sin(a));
|
||||
end;
|
||||
/// Анимирует перемещение графического объекта к точке (x,y) в течение sec секунд
|
||||
procedure AnimMoveTo(x,y: real; sec: real := 1) := Invoke(AnimMoveToP,x,y,sec);
|
||||
|
|
@ -1269,7 +1275,7 @@ procedure Redraw(p: ()->()) := GraphWPFBase.Invoke(p);
|
|||
procedure SetLeft(Self: UIElement; l: integer) := Self.SetLeft(l);
|
||||
procedure SetTop(Self: UIElement; t: integer) := Self.SetTop(t);
|
||||
|
||||
function MoveOn(Self: Point; vx,vy: real): Point; extensionmethod;
|
||||
function MoveBy(Self: Point; vx,vy: real): Point; extensionmethod;
|
||||
begin
|
||||
Result.X := Self.X + vx;
|
||||
Result.Y := Self.Y + vy;
|
||||
|
|
|
|||
|
|
@ -230,11 +230,11 @@ type
|
|||
|
||||
procedure SetD(d: real) := Invoke(SetDP, d);
|
||||
function GetD: real := InvokeReal(()->Cam.Position.DistanceTo(P3D(0, 0, 0)));
|
||||
procedure MoveOnP(x,y,z: real);
|
||||
procedure MoveByP(x,y,z: real);
|
||||
begin
|
||||
Cam.Position += V3D(x,y,z)//:= P3D(Cam.Position.
|
||||
end;
|
||||
procedure MoveOnPV(v: Vector3D);
|
||||
procedure MoveByPV(v: Vector3D);
|
||||
begin
|
||||
Cam.Position += v;
|
||||
end;
|
||||
|
|
@ -270,9 +270,13 @@ type
|
|||
property Distanse: real read GetD write SetD;
|
||||
|
||||
/// Перемещает камеру на вектор (dx,dy,dz)
|
||||
procedure MoveOn(dx,dy,dz: real) := Invoke(MoveOnP,dx,dy,dz);
|
||||
procedure MoveBy(dx,dy,dz: real) := Invoke(MoveByP,dx,dy,dz);
|
||||
/// Перемещает камеру на вектор v
|
||||
procedure MoveOn(v: Vector3D) := Invoke(MoveOnPV,v);
|
||||
procedure MoveBy(v: Vector3D) := Invoke(MoveByPV,v);
|
||||
///--
|
||||
procedure MoveOn(dx,dy,dz: real) := Invoke(MoveByP,dx,dy,dz);
|
||||
///--
|
||||
procedure MoveOn(v: Vector3D) := Invoke(MoveByPV,v);
|
||||
/// Обеспечивает плавное движение камеры
|
||||
procedure AddMoveForce(ForwardForce,RightForce,UpForce: real) := Invoke(AddMoveForceP,RightForce,UpForce,ForwardForce);
|
||||
/// Обеспечивает плавное движение камеры вперед с некоторой силой
|
||||
|
|
@ -458,15 +462,25 @@ type
|
|||
/// Перемещает 3D-объект к точке p
|
||||
function MoveTo(p: Point3D): Object3D := MoveTo(p.X, p.y, p.z);
|
||||
/// Перемещает 3D-объект на вектор (dx,dy,dz)
|
||||
function MoveOn(dx, dy, dz: real): Object3D := MoveTo(x + dx, y + dy, z + dz);
|
||||
function MoveBy(dx, dy, dz: real): Object3D := MoveTo(x + dx, y + dy, z + dz);
|
||||
/// Перемещает 3D-объект на вектор v
|
||||
function MoveOn(v: Vector3D): Object3D := MoveOn(v.X, v.Y, v.Z);
|
||||
function MoveBy(v: Vector3D): Object3D := MoveBy(v.X, v.Y, v.Z);
|
||||
/// Перемещает x-координату 3D-объекта на dx
|
||||
function MoveOnX(dx: real): Object3D := MoveOn(dx, 0, 0);
|
||||
function MoveByX(dx: real): Object3D := MoveBy(dx, 0, 0);
|
||||
/// Перемещает y-координату 3D-объекта на dy
|
||||
function MoveOnY(dy: real): Object3D := MoveOn(0, dy, 0);
|
||||
function MoveByY(dy: real): Object3D := MoveBy(0, dy, 0);
|
||||
/// Перемещает z-координату 3D-объекта на dz
|
||||
function MoveOnZ(dz: real): Object3D := MoveOn(0, 0, dz);
|
||||
function MoveByZ(dz: real): Object3D := MoveBy(0, 0, dz);
|
||||
///--
|
||||
function MoveOn(dx, dy, dz: real): Object3D := MoveTo(x + dx, y + dy, z + dz);
|
||||
///--
|
||||
function MoveOn(v: Vector3D): Object3D := MoveBy(v.X, v.Y, v.Z);
|
||||
///--
|
||||
function MoveOnX(dx: real): Object3D := MoveBy(dx, 0, 0);
|
||||
///--
|
||||
function MoveOnY(dy: real): Object3D := MoveBy(0, dy, 0);
|
||||
///--
|
||||
function MoveOnZ(dz: real): Object3D := MoveBy(0, 0, dz);
|
||||
/// Перемещает 3D-объект вдоль вектора Direction со скоростью Velocity за время dt
|
||||
procedure MoveTime(dt: real); virtual;
|
||||
begin
|
||||
|
|
@ -479,7 +493,7 @@ type
|
|||
var dvx := dx/len*Velocity;
|
||||
var dvy := dy/len*Velocity;
|
||||
var dvz := dz/len*Velocity;
|
||||
MoveOn(dvx*dt,dvy*dt,dvz*dt);
|
||||
MoveBy(dvx*dt,dvy*dt,dvz*dt);
|
||||
end;
|
||||
/// Цвет 3D-объекта
|
||||
property Color: GColor read GetColor write SetColor; virtual;
|
||||
|
|
@ -578,35 +592,35 @@ type
|
|||
function AnimMoveTrajectory(trajectory: sequence of Point3D; seconds: real := 1): AnimationBase := AnimMoveTrajectory(trajectory,seconds,nil);
|
||||
|
||||
/// Возвращает анимацию перемещения объекта на вектор (dx, dy, dz) за seconds секунд. В конце анимации выполняется процедура Completed
|
||||
function AnimMoveOn(dx, dy, dz: real; seconds: real; Completed: procedure): AnimationBase;
|
||||
function AnimMoveBy(dx, dy, dz: real; seconds: real; Completed: procedure): AnimationBase;
|
||||
/// Возвращает анимацию перемещения объекта на вектор (dx, dy, dz) за seconds секунд
|
||||
function AnimMoveOn(dx, dy, dz: real; seconds: real := 1): AnimationBase := AnimMoveOn(dx,dy,dz,seconds,nil);
|
||||
function AnimMoveBy(dx, dy, dz: real; seconds: real := 1): AnimationBase := AnimMoveBy(dx,dy,dz,seconds,nil);
|
||||
|
||||
/// Возвращает анимацию перемещения объекта на вектор v за seconds секунд. В конце анимации выполняется процедура Completed
|
||||
function AnimMoveOn(v: Vector3D; seconds: real; Completed: procedure) := AnimMoveOn(v.x, v.y, v.z, seconds, Completed);
|
||||
function AnimMoveBy(v: Vector3D; seconds: real; Completed: procedure) := AnimMoveBy(v.x, v.y, v.z, seconds, Completed);
|
||||
/// Возвращает анимацию перемещения объекта на вектор v за seconds секунд
|
||||
function AnimMoveOn(v: Vector3D; seconds: real := 1) := AnimMoveOn(v.x, v.y, v.z, seconds, nil);
|
||||
function AnimMoveBy(v: Vector3D; seconds: real := 1) := AnimMoveBy(v.x, v.y, v.z, seconds, nil);
|
||||
|
||||
/// Возвращает анимацию перемещения объекта по оси OX на величину dx за seconds секунд. В конце анимации выполняется процедура Completed
|
||||
function AnimMoveOnX(dx: real; seconds: real; Completed: procedure) := AnimMoveOn(dx, 0, 0, seconds, Completed);
|
||||
function AnimMoveByX(dx: real; seconds: real; Completed: procedure) := AnimMoveBy(dx, 0, 0, seconds, Completed);
|
||||
/// Возвращает анимацию перемещения объекта по оси OX на величину dx за seconds секунд
|
||||
function AnimMoveOnX(dx: real; seconds: real) := AnimMoveOnX(dx, seconds, nil);
|
||||
function AnimMoveByX(dx: real; seconds: real) := AnimMoveByX(dx, seconds, nil);
|
||||
/// Возвращает анимацию перемещения объекта по оси OX на величину dx за 1 секунду
|
||||
function AnimMoveOnX(dx: real) := AnimMoveOnX(dx, 1, nil);
|
||||
function AnimMoveByX(dx: real) := AnimMoveByX(dx, 1, nil);
|
||||
|
||||
/// Возвращает анимацию перемещения объекта по оси OY на величину dy за seconds секунд. В конце анимации выполняется процедура Completed
|
||||
function AnimMoveOnY(dy: real; seconds: real; Completed: procedure) := AnimMoveOn(0, dy, 0, seconds, Completed);
|
||||
function AnimMoveByY(dy: real; seconds: real; Completed: procedure) := AnimMoveBy(0, dy, 0, seconds, Completed);
|
||||
/// Возвращает анимацию перемещения объекта по оси OY на величину dy за seconds секунд
|
||||
function AnimMoveOnY(dy: real; seconds: real) := AnimMoveOnY(dy, seconds, nil);
|
||||
function AnimMoveByY(dy: real; seconds: real) := AnimMoveByY(dy, seconds, nil);
|
||||
/// Возвращает анимацию перемещения объекта по оси OZ на величину dz за 1 секунду
|
||||
function AnimMoveOnY(dy: real) := AnimMoveOnY(dy, 1, nil);
|
||||
function AnimMoveByY(dy: real) := AnimMoveByY(dy, 1, nil);
|
||||
|
||||
/// Возвращает анимацию перемещения объекта по оси OZ на величину dz за seconds секунд. В конце анимации выполняется процедура Completed
|
||||
function AnimMoveOnZ(dz: real; seconds: real; Completed: procedure) := AnimMoveOn(0, 0, dz, seconds, Completed);
|
||||
function AnimMoveByZ(dz: real; seconds: real; Completed: procedure) := AnimMoveBy(0, 0, dz, seconds, Completed);
|
||||
/// Возвращает анимацию перемещения объекта по оси OZ на величину dz за seconds секунд
|
||||
function AnimMoveOnZ(dz: real; seconds: real) := AnimMoveOnZ(dz, seconds, nil);
|
||||
function AnimMoveByZ(dz: real; seconds: real) := AnimMoveByZ(dz, seconds, nil);
|
||||
/// Возвращает анимацию перемещения объекта по оси OZ на величину dz за 1 секунду
|
||||
function AnimMoveOnZ(dz: real) := AnimMoveOnZ(dz, 1, nil);
|
||||
function AnimMoveByZ(dz: real) := AnimMoveByZ(dz, 1, nil);
|
||||
|
||||
/// Возвращает анимацию масштабирования объекта на величину sc за seconds секунд. В конце анимации выполняется процедура Completed
|
||||
function AnimScale(sc: real; seconds: real; Completed: procedure): AnimationBase;
|
||||
|
|
@ -2795,7 +2809,7 @@ function Object3D.AnimMoveTo(x, y, z, seconds: real; Completed: procedure) := ne
|
|||
|
||||
function Object3D.AnimMoveTrajectory(trajectory: sequence of Point3D; seconds: real; Completed: procedure) := new OffsetAnimationUsingKeyframes(Self, seconds, trajectory, Completed);
|
||||
|
||||
function Object3D.AnimMoveOn(dx, dy, dz, seconds: real; Completed: procedure) := new OffsetAnimationOn(Self, seconds, dx, dy, dz, Completed);
|
||||
function Object3D.AnimMoveBy(dx, dy, dz, seconds: real; Completed: procedure) := new OffsetAnimationOn(Self, seconds, dx, dy, dz, Completed);
|
||||
|
||||
function Object3D.AnimScale(sc, seconds: real; Completed: procedure) := new ScaleAnimation(Self, seconds, sc, Completed);
|
||||
|
||||
|
|
|
|||
|
|
@ -230,11 +230,11 @@ type
|
|||
|
||||
procedure SetD(d: real) := Invoke(SetDP, d);
|
||||
function GetD: real := InvokeReal(()->Cam.Position.DistanceTo(P3D(0, 0, 0)));
|
||||
procedure MoveOnP(x,y,z: real);
|
||||
procedure MoveByP(x,y,z: real);
|
||||
begin
|
||||
Cam.Position += V3D(x,y,z)//:= P3D(Cam.Position.
|
||||
end;
|
||||
procedure MoveOnPV(v: Vector3D);
|
||||
procedure MoveByPV(v: Vector3D);
|
||||
begin
|
||||
Cam.Position += v;
|
||||
end;
|
||||
|
|
@ -270,9 +270,13 @@ type
|
|||
property Distanse: real read GetD write SetD;
|
||||
|
||||
/// Перемещает камеру на вектор (dx,dy,dz)
|
||||
procedure MoveOn(dx,dy,dz: real) := Invoke(MoveOnP,dx,dy,dz);
|
||||
procedure MoveBy(dx,dy,dz: real) := Invoke(MoveByP,dx,dy,dz);
|
||||
/// Перемещает камеру на вектор v
|
||||
procedure MoveOn(v: Vector3D) := Invoke(MoveOnPV,v);
|
||||
procedure MoveBy(v: Vector3D) := Invoke(MoveByPV,v);
|
||||
///--
|
||||
procedure MoveOn(dx,dy,dz: real) := Invoke(MoveByP,dx,dy,dz);
|
||||
///--
|
||||
procedure MoveOn(v: Vector3D) := Invoke(MoveByPV,v);
|
||||
/// Обеспечивает плавное движение камеры
|
||||
procedure AddMoveForce(ForwardForce,RightForce,UpForce: real) := Invoke(AddMoveForceP,RightForce,UpForce,ForwardForce);
|
||||
/// Обеспечивает плавное движение камеры вперед с некоторой силой
|
||||
|
|
@ -458,15 +462,25 @@ type
|
|||
/// Перемещает 3D-объект к точке p
|
||||
function MoveTo(p: Point3D): Object3D := MoveTo(p.X, p.y, p.z);
|
||||
/// Перемещает 3D-объект на вектор (dx,dy,dz)
|
||||
function MoveOn(dx, dy, dz: real): Object3D := MoveTo(x + dx, y + dy, z + dz);
|
||||
function MoveBy(dx, dy, dz: real): Object3D := MoveTo(x + dx, y + dy, z + dz);
|
||||
/// Перемещает 3D-объект на вектор v
|
||||
function MoveOn(v: Vector3D): Object3D := MoveOn(v.X, v.Y, v.Z);
|
||||
function MoveBy(v: Vector3D): Object3D := MoveBy(v.X, v.Y, v.Z);
|
||||
/// Перемещает x-координату 3D-объекта на dx
|
||||
function MoveOnX(dx: real): Object3D := MoveOn(dx, 0, 0);
|
||||
function MoveByX(dx: real): Object3D := MoveBy(dx, 0, 0);
|
||||
/// Перемещает y-координату 3D-объекта на dy
|
||||
function MoveOnY(dy: real): Object3D := MoveOn(0, dy, 0);
|
||||
function MoveByY(dy: real): Object3D := MoveBy(0, dy, 0);
|
||||
/// Перемещает z-координату 3D-объекта на dz
|
||||
function MoveOnZ(dz: real): Object3D := MoveOn(0, 0, dz);
|
||||
function MoveByZ(dz: real): Object3D := MoveBy(0, 0, dz);
|
||||
///--
|
||||
function MoveOn(dx, dy, dz: real): Object3D := MoveTo(x + dx, y + dy, z + dz);
|
||||
///--
|
||||
function MoveOn(v: Vector3D): Object3D := MoveBy(v.X, v.Y, v.Z);
|
||||
///--
|
||||
function MoveOnX(dx: real): Object3D := MoveBy(dx, 0, 0);
|
||||
///--
|
||||
function MoveOnY(dy: real): Object3D := MoveBy(0, dy, 0);
|
||||
///--
|
||||
function MoveOnZ(dz: real): Object3D := MoveBy(0, 0, dz);
|
||||
/// Перемещает 3D-объект вдоль вектора Direction со скоростью Velocity за время dt
|
||||
procedure MoveTime(dt: real); virtual;
|
||||
begin
|
||||
|
|
@ -479,7 +493,7 @@ type
|
|||
var dvx := dx/len*Velocity;
|
||||
var dvy := dy/len*Velocity;
|
||||
var dvz := dz/len*Velocity;
|
||||
MoveOn(dvx*dt,dvy*dt,dvz*dt);
|
||||
MoveBy(dvx*dt,dvy*dt,dvz*dt);
|
||||
end;
|
||||
/// Цвет 3D-объекта
|
||||
property Color: GColor read GetColor write SetColor; virtual;
|
||||
|
|
@ -578,35 +592,35 @@ type
|
|||
function AnimMoveTrajectory(trajectory: sequence of Point3D; seconds: real := 1): AnimationBase := AnimMoveTrajectory(trajectory,seconds,nil);
|
||||
|
||||
/// Возвращает анимацию перемещения объекта на вектор (dx, dy, dz) за seconds секунд. В конце анимации выполняется процедура Completed
|
||||
function AnimMoveOn(dx, dy, dz: real; seconds: real; Completed: procedure): AnimationBase;
|
||||
function AnimMoveBy(dx, dy, dz: real; seconds: real; Completed: procedure): AnimationBase;
|
||||
/// Возвращает анимацию перемещения объекта на вектор (dx, dy, dz) за seconds секунд
|
||||
function AnimMoveOn(dx, dy, dz: real; seconds: real := 1): AnimationBase := AnimMoveOn(dx,dy,dz,seconds,nil);
|
||||
function AnimMoveBy(dx, dy, dz: real; seconds: real := 1): AnimationBase := AnimMoveBy(dx,dy,dz,seconds,nil);
|
||||
|
||||
/// Возвращает анимацию перемещения объекта на вектор v за seconds секунд. В конце анимации выполняется процедура Completed
|
||||
function AnimMoveOn(v: Vector3D; seconds: real; Completed: procedure) := AnimMoveOn(v.x, v.y, v.z, seconds, Completed);
|
||||
function AnimMoveBy(v: Vector3D; seconds: real; Completed: procedure) := AnimMoveBy(v.x, v.y, v.z, seconds, Completed);
|
||||
/// Возвращает анимацию перемещения объекта на вектор v за seconds секунд
|
||||
function AnimMoveOn(v: Vector3D; seconds: real := 1) := AnimMoveOn(v.x, v.y, v.z, seconds, nil);
|
||||
function AnimMoveBy(v: Vector3D; seconds: real := 1) := AnimMoveBy(v.x, v.y, v.z, seconds, nil);
|
||||
|
||||
/// Возвращает анимацию перемещения объекта по оси OX на величину dx за seconds секунд. В конце анимации выполняется процедура Completed
|
||||
function AnimMoveOnX(dx: real; seconds: real; Completed: procedure) := AnimMoveOn(dx, 0, 0, seconds, Completed);
|
||||
function AnimMoveByX(dx: real; seconds: real; Completed: procedure) := AnimMoveBy(dx, 0, 0, seconds, Completed);
|
||||
/// Возвращает анимацию перемещения объекта по оси OX на величину dx за seconds секунд
|
||||
function AnimMoveOnX(dx: real; seconds: real) := AnimMoveOnX(dx, seconds, nil);
|
||||
function AnimMoveByX(dx: real; seconds: real) := AnimMoveByX(dx, seconds, nil);
|
||||
/// Возвращает анимацию перемещения объекта по оси OX на величину dx за 1 секунду
|
||||
function AnimMoveOnX(dx: real) := AnimMoveOnX(dx, 1, nil);
|
||||
function AnimMoveByX(dx: real) := AnimMoveByX(dx, 1, nil);
|
||||
|
||||
/// Возвращает анимацию перемещения объекта по оси OY на величину dy за seconds секунд. В конце анимации выполняется процедура Completed
|
||||
function AnimMoveOnY(dy: real; seconds: real; Completed: procedure) := AnimMoveOn(0, dy, 0, seconds, Completed);
|
||||
function AnimMoveByY(dy: real; seconds: real; Completed: procedure) := AnimMoveBy(0, dy, 0, seconds, Completed);
|
||||
/// Возвращает анимацию перемещения объекта по оси OY на величину dy за seconds секунд
|
||||
function AnimMoveOnY(dy: real; seconds: real) := AnimMoveOnY(dy, seconds, nil);
|
||||
function AnimMoveByY(dy: real; seconds: real) := AnimMoveByY(dy, seconds, nil);
|
||||
/// Возвращает анимацию перемещения объекта по оси OZ на величину dz за 1 секунду
|
||||
function AnimMoveOnY(dy: real) := AnimMoveOnY(dy, 1, nil);
|
||||
function AnimMoveByY(dy: real) := AnimMoveByY(dy, 1, nil);
|
||||
|
||||
/// Возвращает анимацию перемещения объекта по оси OZ на величину dz за seconds секунд. В конце анимации выполняется процедура Completed
|
||||
function AnimMoveOnZ(dz: real; seconds: real; Completed: procedure) := AnimMoveOn(0, 0, dz, seconds, Completed);
|
||||
function AnimMoveByZ(dz: real; seconds: real; Completed: procedure) := AnimMoveBy(0, 0, dz, seconds, Completed);
|
||||
/// Возвращает анимацию перемещения объекта по оси OZ на величину dz за seconds секунд
|
||||
function AnimMoveOnZ(dz: real; seconds: real) := AnimMoveOnZ(dz, seconds, nil);
|
||||
function AnimMoveByZ(dz: real; seconds: real) := AnimMoveByZ(dz, seconds, nil);
|
||||
/// Возвращает анимацию перемещения объекта по оси OZ на величину dz за 1 секунду
|
||||
function AnimMoveOnZ(dz: real) := AnimMoveOnZ(dz, 1, nil);
|
||||
function AnimMoveByZ(dz: real) := AnimMoveByZ(dz, 1, nil);
|
||||
|
||||
/// Возвращает анимацию масштабирования объекта на величину sc за seconds секунд. В конце анимации выполняется процедура Completed
|
||||
function AnimScale(sc: real; seconds: real; Completed: procedure): AnimationBase;
|
||||
|
|
@ -2795,7 +2809,7 @@ function Object3D.AnimMoveTo(x, y, z, seconds: real; Completed: procedure) := ne
|
|||
|
||||
function Object3D.AnimMoveTrajectory(trajectory: sequence of Point3D; seconds: real; Completed: procedure) := new OffsetAnimationUsingKeyframes(Self, seconds, trajectory, Completed);
|
||||
|
||||
function Object3D.AnimMoveOn(dx, dy, dz, seconds: real; Completed: procedure) := new OffsetAnimationOn(Self, seconds, dx, dy, dz, Completed);
|
||||
function Object3D.AnimMoveBy(dx, dy, dz, seconds: real; Completed: procedure) := new OffsetAnimationOn(Self, seconds, dx, dy, dz, Completed);
|
||||
|
||||
function Object3D.AnimScale(sc, seconds: real; Completed: procedure) := new ScaleAnimation(Self, seconds, sc, Completed);
|
||||
|
||||
|
|
|
|||
|
|
@ -376,8 +376,12 @@ procedure MoveRel(dx,dy: real);
|
|||
/// Рисует отрезок от текущей позиции до точки, смещённой на вектор (dx,dy). Текущая позиция переносится в новую точку
|
||||
procedure LineRel(dx,dy: real);
|
||||
/// Перемещает текущую позицию рисования на вектор (dx,dy)
|
||||
procedure MoveOn(dx,dy: real);
|
||||
procedure MoveBy(dx,dy: real);
|
||||
/// Рисует отрезок от текущей позиции до точки, смещённой на вектор (dx,dy). Текущая позиция переносится в новую точку
|
||||
procedure LineBy(dx,dy: real);
|
||||
///--
|
||||
procedure MoveOn(dx,dy: real);
|
||||
///--
|
||||
procedure LineOn(dx,dy: real);
|
||||
|
||||
/// Рисует ломаную, заданную массивом точек
|
||||
|
|
@ -1206,6 +1210,8 @@ procedure MoveRel(dx,dy: real) := (Pen.fx,Pen.fy) := (Pen.fx + dx, Pen.fy + dy);
|
|||
procedure LineRel(dx,dy: real) := LineTo(Pen.fx + dx, Pen.fy + dy);
|
||||
procedure MoveOn(dx,dy: real) := MoveRel(dx,dy);
|
||||
procedure LineOn(dx,dy: real) := LineRel(dx,dy);
|
||||
procedure MoveBy(dx,dy: real) := MoveRel(dx,dy);
|
||||
procedure LineBy(dx,dy: real) := LineRel(dx,dy);
|
||||
|
||||
procedure PolyLine(points: array of Point) := InvokeVisual(PolyLineP,points);
|
||||
procedure PolyLine(points: array of Point; c: GColor) := InvokeVisual(PolyLinePC,points,c);
|
||||
|
|
|
|||
|
|
@ -289,14 +289,18 @@ type
|
|||
procedure MoveForward(r: real);
|
||||
begin
|
||||
var a := Pi/180*(90-RotateAngle);
|
||||
MoveOn(r*Cos(a),-r*Sin(a));
|
||||
MoveBy(r*Cos(a),-r*Sin(a));
|
||||
end;
|
||||
/// Перемещает графический объект на вектор (a,b)
|
||||
procedure MoveOn(a,b: real) := MoveTo(Left+a,Top+b);
|
||||
procedure MoveBy(a,b: real) := MoveTo(Left+a,Top+b);
|
||||
/// Перемещает графический объект на вектор (a,b)
|
||||
procedure MoveBy(v: (real,real)) := MoveTo(Left+v[0],Top+v[1]);
|
||||
///--
|
||||
procedure MoveOn(a,b: real) := MoveTo(Left+a,Top+b);
|
||||
///--
|
||||
procedure MoveOn(v: (real,real)) := MoveTo(Left+v[0],Top+v[1]);
|
||||
/// Перемещает графический объект на вектор (dx,dy)
|
||||
procedure Move; virtual := MoveOn(dx,dy);
|
||||
procedure Move; virtual := MoveBy(dx,dy);
|
||||
/// Перемещает графический объект вдоль вектора Direction со скоростью Velocity за время dt
|
||||
procedure MoveTime(dt: real); virtual;
|
||||
begin
|
||||
|
|
@ -305,7 +309,7 @@ type
|
|||
exit;
|
||||
var dvx := dx/len*Velocity;
|
||||
var dvy := dy/len*Velocity;
|
||||
MoveOn(dvx*dt,dvy*dt);
|
||||
MoveBy(dvx*dt,dvy*dt);
|
||||
end;
|
||||
/// Поворачивает графический объект по часовой стрелке на угол a
|
||||
procedure Rotate(a: real) := RotateAngle += a;
|
||||
|
|
@ -330,7 +334,7 @@ type
|
|||
procedure Scale(r: real) := ScaleFactor *= r;
|
||||
|
||||
private
|
||||
procedure AnimMoveOnP(a,b,sec: real);
|
||||
procedure AnimMoveByP(a,b,sec: real);
|
||||
begin
|
||||
var ax := new DoubleAnimation(a + transl.X, System.TimeSpan.FromSeconds(sec));
|
||||
var ay := new DoubleAnimation(b + transl.Y, System.TimeSpan.FromSeconds(sec));
|
||||
|
|
@ -365,12 +369,14 @@ type
|
|||
end;
|
||||
public
|
||||
/// Анимирует перемещение графического объекта на вектор (a,b) в течение sec секунд
|
||||
procedure AnimMoveOn(a,b: real; sec: real := 1) := Invoke(AnimMoveOnP,a,b,sec);
|
||||
procedure AnimMoveBy(a,b: real; sec: real := 1) := Invoke(AnimMoveByP,a,b,sec);
|
||||
///--
|
||||
procedure AnimMoveOn(a,b: real; sec: real := 1) := Invoke(AnimMoveByP,a,b,sec);
|
||||
/// Анимирует перемещение графического объекта в направлении RotateAngle (вверх при RotateAngle=0)
|
||||
procedure AnimMoveForward(r: real);
|
||||
begin
|
||||
var a := Pi/180*(90-RotateAngle);
|
||||
AnimMoveOn(r*Cos(a),-r*Sin(a));
|
||||
AnimMoveBy(r*Cos(a),-r*Sin(a));
|
||||
end;
|
||||
/// Анимирует перемещение графического объекта к точке (x,y) в течение sec секунд
|
||||
procedure AnimMoveTo(x,y: real; sec: real := 1) := Invoke(AnimMoveToP,x,y,sec);
|
||||
|
|
@ -1269,7 +1275,7 @@ procedure Redraw(p: ()->()) := GraphWPFBase.Invoke(p);
|
|||
procedure SetLeft(Self: UIElement; l: integer) := Self.SetLeft(l);
|
||||
procedure SetTop(Self: UIElement; t: integer) := Self.SetTop(t);
|
||||
|
||||
function MoveOn(Self: Point; vx,vy: real): Point; extensionmethod;
|
||||
function MoveBy(Self: Point; vx,vy: real): Point; extensionmethod;
|
||||
begin
|
||||
Result.X := Self.X + vx;
|
||||
Result.Y := Self.Y + vy;
|
||||
|
|
|
|||
Loading…
Reference in a new issue