Axonometrické zobrazovanie

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategória: KMP (Klub mladých programátorov)
axon.pngAutor: Ľuboš Saloky
Program: Axon.pas
Súbor exe: Axon.exe
Potrebné: Maingr.pasEgavga.bgi

Axonometrické zobrazovanie. Po stlačení klávesu sa zobrazenie posunie.
{ AXON.PAS                                                          }
{ Axonometrické zobrazovanie.                                       }
{ Po stlaceni klavesu sa zobrazenie posunie.                        }
{                                                                   }
{ Author: Ľuboš Saloky                                              }
{ Datum: 01.01.1996                           http://www.trsek.com  }
 
program Axonometricke_zobrazovanie;
uses MainGr;
const KVrcholy:array[1..8,1..3] of byte=((0,0,0),(0,0,1),(0,1,0),(0,1,1),
                                         (1,0,0),(1,0,1),(1,1,0),(1,1,1));
      KHrany:array[1..12,1..2] of byte=((1,2),(2,4),(4,3),(3,1),
                                        (5,6),(6,8),(8,7),(7,5),
                                        (1,5),(2,6),(3,7),(4,8));
      Alfa:real=0;
      Beta:real=0;
var i,j,k:integer;
    x,y,x2,y2:integer;
 
procedure VycisliItyVrchol;
begin
  x:=Round((-cos(Alfa)*KVrcholy[i,1]
            +cos(Beta)*KVrcholy[i,2])*40+100);
  y:=Round(( sin(Alfa)*KVrcholy[i,1]
            +sin(Beta)*KVrcholy[i,2]
            -          Kvrcholy[i,3])*40+100);
end;
 
BEGIN
  InicializujGrafiku;
  for k:=0 to 359 do begin
    Color:=27;
    for j:=1 to 12 do begin
      i:=KHrany[j,1];
      VycisliItyVrchol;
      x2:=x;y2:=y;
      i:=KHrany[j,2];
      VycisliItyVrchol;
      Ciara(x,y,x2,y2);
    end;
    for i:=1 to 8 do begin
      VycisliItyVrchol;
      PolozBod(x,y,31);
    end;
    Color:=71;
    Ciara(100,100,100+Round(-cos(Alfa)*50),100-Round(-sin(Alfa)*50));
    Ciara(100,100,100+Round( cos(Beta)*50),100-Round(-sin(Beta)*50));
    Ciara(100,100,100,50);
    Color:=31;
    CitajZnak;
    Alfa:=Alfa+pi/180;
    CakajNaVOI;
    Color:=23;
    VyplnPlochu(50,20,140,140);
  end;
  ReadLn;
END.