unit unit_Cerchi;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,
grafica, tpenna, unit_figura_base;
type TCerchi=class(FiguraBase)
private
var estremi:tSegmento;
public
constructor crea(seme:Ttavola);
procedure setPuntoInizio(x, y: integer); override;
procedure setPuntoFine(x, y: integer); override;
procedure traccia; override;
function denominazione: string; override;
function perimetro: double; override;
function area: double; override;
end;
implementation
constructor TCerchi.crea(seme:Ttavola);
begin
inherited crea(seme);
estremi.inizio.x:=0.0;
estremi.inizio.y:=0.0;
estremi.inizio.valido:=True;
estremi.fine.x:=0.0;
estremi.fine.y:=0.0;
estremi.fine.valido:=True;
end;
procedure TCerchi.setPuntoInizio(x, y: integer);
begin
estremi.inizio.x:=x;
estremi.inizio.y:=y;
inizializzata:=true;
end;
procedure TCerchi.setPuntoFine(x, y: integer);
begin
estremi.fine.x:=x;
estremi.fine.y:=y;
end;
procedure TCerchi.traccia;
begin
setPennaInfoglio();
foglio.cerchio(estremi.inizio.x, estremi.inizio.y, estremi.distanza);
end;
function TCerchi.denominazione: string;
begin
denominazione:=format('Cerchio in (%0.0f | %0.0f) e raggio %0.2f', [estremi.inizio.x, estremi.inizio.y, estremi.distanza]);
end;
function TCerchi.perimetro: double;
var raggio:double;
begin
raggio:=estremi.distanza;
perimetro:=raggio * 2.0 * PI
end;
function TCerchi.area: double;
var raggio:double;
begin
raggio:=estremi.distanza;
area:=raggio * raggio * PI;
end;
end.