Hosted by
 |
package body Straights is
function Create
(To : in Vector)
return Line is
begin
return new Straight_Record'(To => To, Length => 0.0);
end Create;
function Length
(Start : in Vector;
This : access Straight_Record)
return Real is
begin
if This.Length = 0.0 then
This.Length := abs(This.To - Start);
end if;
return This.Length;
end Length;
procedure Scale
(This : access Straight_Record;
Factor : in Real) is
begin
This.To := This.To * Factor;
This.Length := This.Length * Factor;
end Scale;
procedure Translate
(This : access Straight_Record;
Offset : in Vector) is
begin
This.To := This.To + Offset;
end Translate;
function Way_Point
(Start : in Vector;
This : access Straight_Record;
Part : in Real)
return Vector is
begin
return Start + Part * (This.To - Start);
end Way_Point;
function Postscript
(This : access Straight_Record)
return String is
begin
return Postscript(This.To) & " lineto";
end Postscript;
end Straights;
|