3.9.3 Escaliers

{Un autre Algorythme de Breshenam pour dessiner des lignes en escalier.}

procedure toutil_ligne.ligne_escalier(dc:hdc; generate:boolean);
   var i:integer;
       dx,dy:integer;
       commencement,suivant:tpoint;
       nb_marche:integer;
   begin
   nb_marche:=u_object.PPR^.rec_Ligne_Symbole.nb_marche;
   dx:=(point_actuel.x-point_depart.x) div nb_marche;
   dy:=(point_actuel.y-point_depart.y) div nb_marche;
   commencement:=point_depart;
   for i:=1 to nb_marche do
      begin
      suivant.x:=commencement.x+dx;
      suivant.y:=commencement.y+dy;
      if generate then
         begin
         aforme^.elements^.insert(new(lignenodeptr,init(commencement.x-aforme^.x,suivant.y-aforme^.y)));
         with suivant do
            aforme^.elements^.insert(new(lignenodeptr,init(x-aforme^.x,y-aforme^.y)));
         end
      else
         begin  {dessin}
         moveto(dc,commencement.x,commencement.y);
         lineto(dc,commencement.x,suivant.y);
         lineto(dc,suivant.x,suivant.y);
         end;   {dessin}
      commencement:=suivant;
      end;
   end; {toutil_ligne.ligne_escalier}
Posted in .