Informatika gyűjtemény

NézetNyomtat

nszog.pas (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 1 KB
program nszog;
uses graph;
const
        {világ}
        vb = -10;
        vj = 10;
        va = -10;
        vf = 10;
        
        {kép}
        kb = 50;
        ka = 650;
        kf = 50;
        kj = 650;

function vkx(x:double):integer;
var lambda : double;
begin
    lambda := (x-vb)/(vj-vb);
    vkx := round((1-lambda)*kb+lambda*kj);
end;

function vky(y:double):integer;
var lambda : double;
begin
    lambda := (y-va)/(vf-va);
    vky := round((1-lambda)*ka+lambda*kf);
end;

procedure vonal(x1,y1,x2,y2:double);
var kx1,kx2,ky1,ky2 : integer;
begin
    kx1 := vkx(x1); kx2 := vkx(x2);
    ky1 := vky(y1); ky2 := vky(y2);
    line(kx1,ky1,kx2,ky2);
end;
{Szabályos n-szög kirajzolása
x,y : középpont koordinátái
n : az oldalak száma
alfa : elforgatottság
r : sugár
}
procedure nszog(n:integer;x,y,alfa,r:double);
var i : integer;
    x1,y1,x2,y2 : double;
begin
    for i := 1 to n do
    begin
        x1 := x + r*cos(alfa+(i-1)*2*Pi()/n);
        y1 := y + r*sin(alfa+(i-1)*2*Pi()/n);
        x2 := x + r*cos(alfa+i*2*Pi()/n);
        y2 := y + r*sin(alfa+i*2*Pi()/n);
        vonal(x1,y1,x2,y2);
    end;
end;


var gd,gm : integer;
      
BEGIN
    detectgraph(gd,gm);
    initgraph(gd,gm,'');

    nszog(7,0,0,1,8);
    vonal(-10,0,10,0);
    vonal(0,-10,0,10);
    
    readln;
    closegraph;
END.
(Vissza)