Joonistada tuleb sama eset või kujundit sageli mitmest küljest, eri nurkade alt või lausa mitmesse kohta korraga. Selleks on kasulik u"hte massiivi (või kirjesse) koguda objekti andmed (punktide, joonte, pindade jm. koordinaadid keha (suvaliselt valitud) nullpunkti suhtes). Edaspidi, kui on vaja kujund panna ekraanile, tuleb eseme koordinaatidele liita samapalju, kui on vaja liita nullpunktile, et ta paikneks ekraanil o~iges kohas. Nii nagu eelmises näites, kus liitsime x-koordinaatidele pool ekraanilaiust ning y-koordinaatidele pool ekraanikõrgust ning tulemusena saime oma kujundi ekraani keskele.

Kujundi keeramiseks u"mber telje mingi nurga võrra tuleb kõik teda määravad punktid keerata uude asukohta ning siis uute punktide abil joonistada kujund. Ümber oma nullpunkti (punkti mille suhtes on keha tükkide koordinaadid) saab kergesti keerata. Keerata tuleb nii nagu matemaatikas punkti ristkoordinaadistikul nullpunkti suhtes: uusx=vanax*cos(nurk)+vanay*sin(nurk)
uusy=-vanax*sin(nurk)+vanay*cos(nurk)

uses graph, crt;
type
punkt=record
       x: integer;
       y: integer;
      end;
punktid= array[1..100] of punkt;
var p, p2 : punktid;
keskp: punkt;
arv: integer;
nurk: real;

procedure algus;
var d, m: integer;
begin
   p[1].x:=0;
   p[1].Y:=0;
   p[2].x:=100;
   p[2].Y:=0;
   p[3].x:=0;
   p[3].Y:=100;
   arv:=3;
   d:=detect;
   initgraph(d, m, '');
   keskp.x:=getmaxx div 2;
   keskp.y:=getmaxy div 2;
end;

procedure joonista(p: punktid; kp: punkt; kogus: integer);
var i: integer;
begin
   for i:=2 to kogus do
   begin
    line(kp.x+p[i-1].x, kp.y+p[i-1].y, kp.x+p[i].x, kp.y+p[i].y);
   end;
   line(kp.x+p[arv].x, kp.y+p[arv].y, kp.x+p[1].x, kp.y+p[1].y);
end;

procedure keera(p: punktid; var p2: punktid; kogus: integer; x: real);
var i: integer;
begin
  for i:=1 to kogus do begin
    p2[i].x:=round(p[i].x*cos(x)+p[i].y*sin(x)); {round muudab täisarvuks}
    p2[i].y:=round(-p[i].x*sin(x)+p[i].y*cos(x));
  end;

end;

begin
   algus;
   nurk:=0;

   while nurk<2*Pi do
   begin
    keera(p, p2, arv, nurk);
    joonista(p2, keskp, arv);
    nurk:=nurk+Pi/24;
    delay(500);
   end;
   readln;
   closegraph;
end.