program pttest;
uses grafika;

var pt:TPoint;
    pth:TPointH;

type TMatrix = array[1..3, 1..3] of real;
type TPointMatrix = array[1..3] of real;

const xlatematrix:TMatrix = ((1,0,0),(0,1,0),(3,3,1));

var xlatem:TMatrix;

procedure PointMatrixTimesMatrix(pt:TPointMatrix; m:TMatrix; result:TPointMatrix);
  var i,j:integer;
begin
  for i:=1 to 3 do begin
    result[j]:=0;
    for j:=1 to 3 do begin
      result[j]:=result[j] + (pt[j]*m[j,i]);
    end;
  end;
end;

procedure PointHToPointMatrix(pth:TPointH; var ptm:TPointMatrix);
begin
  ptm[1]:=pth.x;
  ptm[2]:=pth.y;
  ptm[3]:=pth.h;
end;

procedure xlatePointH(pt:TPointH; dx,dy:integer; var xpt:TPointH);
  var ptm:TPointMatrix;
begin
  PointHToPointMatrix(pt, ptm);
end;

var pm,pn:TPointMatrix;
begin
  pt.x := 25;
  pt.y := 12;
  PointToPointH(pt, pth);
  writeln(pth.x,' ', pth.y, ' ',pth.h);
  PointHToPointMatrix(pth, pm);
  writeln(pm[1],' ', pm[2], ' ',pm[3]);
  PointMatrixTimesMatrix(pm, xlatematrix, pn);

  writeln(pn[1],' ', pn[2], ' ',pn[3]);
end.