ManipulasiGambar;

Uses Crt,Graph;
Type Freq = Array[0..255] of Longint;
TPr = Array[0..255] of Real;
RFreq = Array[0..255] of Byte;

Var Col,Row,Ver,Hor : Integer;
image : File Of Byte;
NamaFile : String[30];
X,Y : Integer;
Color : Byte;
Ukuran : Longint;
ColFreq,ColFreq1 : Freq;
RColFreq : RFreq;
Pr,Sx : TPr;
Sigma : Longint;
Pilih : Byte;

Read more of this post

TRANSFORMASI V.3

uses graph,crt;
type tmatriks = array[1..3,1..3] of real;
tvektor  = array[1..3] of real;
ttitik   = array[1..4] of real;
const hidup = true;
mati = false;
var gd,gm,i,j,counter,n     : integer;
XVmin,XVmax,
YVmin,YVmax,
XWmin,XWmax,
YWmin,YWmax   : integer;
ms            : tmatriks;
vek,vekhasil  : tvektor;
Xw,Yw,Xv,Yv   : ttitik;
s             : string[7];
lebar,tinggi : byte;

Read more of this post

TRANSFORMASI V.2

uses graph,crt;
type tmatriks = array[1..3,1..3] of real;
tvektor  = array[1..3] of real;
ttitik   = array[1..4] of real;
var gd,gm,i,j,counter,n     : integer;
XVmin,XVmax,
YVmin,YVmax,
XWmin,XWmax,
YWmin,YWmax   : integer;
ms            : tmatriks;
vek,vekhasil  : tvektor;
Xw,Yw,Xv,Yv   : ttitik;
s             : string[7];

procedure BuatKotak(x1,y1,x2,y2 : integer; warnakotak,warnabatas : word);
begin
setcolor(warnabatas);   {menentukan warna batas }
rectangle(x1,y1,x2,y2);   { membuat kotak }
setfillstyle(solidfill,warnakotak);   { menentukan warna kotak }
floodfill((x1+x2) div 2,(y1+y2) div 2,warnabatas);   { proses pewarnaan kotak }
end;

procedure MatriksSebarang(var Ms : TMatriks; sx1,sx2,sx3,sy1,sy2,sy3 : real);
begin
{ matriks transformasi }
Ms[1,1] := sx1;Ms[1,2] := sy1;Ms[1,3] := 0;
Ms[2,1] := sx2;Ms[2,2] := sy2;Ms[2,3] := 0;
Ms[3,1] := sx3;Ms[3,2] := sy3;Ms[3,3] := 1;
end;

Procedure InisialisasiViewport;
begin
{ transformasi window ke viewport }
XVmin := 1;XVmax := 479;   { titik-titik batas viewport }
YVmin := 43;YVmax := 479;

XWmin := -10;XWmax := 10;  { titik-titik batas window }
YWmin := -10;YWmax := 10;
end;

procedure GambarPoligon(var Xv,Yv : TTitik; X1,Y1,X2,Y2,X3,Y3,X4,Y4 : real;
warna : word);
var i : integer;
begin
InisialisasiViewport;

{ titik-titik poligon }
Xw[1] := x1;Xw[2] := x2;Xw[3] := x3;Xw[4] := x4;
Yw[1] := y1;Yw[2] := y2;Yw[3] := y3;Yw[4] := y4;

{ warna poligon }
setcolor(warna);

{ rumus mwnentukan letak titik-titik x dan y di viewport }
for i := 1 to 4 do begin
Xv[i] := XVmin + (Xw[i]-XWmin)/(XWmax-XWmin)*(XVmax-XVmin);
Yv[i] := YVmax – (Yw[i]-YWmin)/(YWmax-YWmin)*(YVmax-YVmin);
end;

{ menggambar garis-garis poligon }
for i := 1 to 4 do begin
if i = 4 then line(round(Xv[i]),round(Yv[i]),round(Xv[i-3]),round(Yv[i-3]))
else line(round(Xv[i]),round(Yv[i]),round(Xv[i+1]),round(Yv[i+1]));
end;
end;

procedure KerjakanTransformasi;
var c : char;
begin
repeat
c := readkey;
until c = #27;
end;

begin { program utama }
{inisialisasi grafik }
gd := detect;
initgraph(gd,gm,’c:\tpascal7\bgi’);

{ judul }
BuatKotak(1,1,639,40,brown,white);
settextjustify(centertext,centertext);
settextstyle(triplexfont,horizdir,3);
outtextxy(320,15,’T R A N S F O R M A S I   S E B A R A N G’);

BuatKotak(1,43,479,479,blue,white);   { window tempat penggambaran obyek transformasi }

{ window pendefinisian poligon }
BuatKotak(482,43,639,65,magenta,white);
settextjustify(centertext,centertext);
settextstyle(defaultfont,horizdir,1);
outtextxy((482+639) div 2,55,’Poligon ‘);

BuatKotak(482,65,639,85,cyan,white);
settextjustify(lefttext,centertext);
settextstyle(defaultfont,horizdir,1);
outtextxy(485,75,’Segi :   (maks 10)’);

BuatKotak(482,85,639,227,cyan,white);
settextjustify(lefttext,centertext);
settextstyle(defaultfont,horizdir,1);
outtextxy(485,95,’Titiký Poligon : ‘);

{ window tempat modifikasi matriks transformasi }
BuatKotak(482,230,639,250,magenta,white);
settextjustify(lefttext,centertext);
settextstyle(defaultfont,horizdir,1);
outtextxy(485,240,’Matriks : ‘);

BuatKotak(482,250,639,347,cyan,white);
settextjustify(centertext,centertext);
settextstyle(defaultfont,horizdir,1);
outtextxy(320,15,’ ‘);  { duruuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuung}

{ window keterangan tombol kendali }
BuatKotak(482,350,639,370,darkgray,white);
settextjustify(lefttext,centertext);
settextstyle(defaultfont,horizdir,1);
outtextxy(485,360,’Tombol Kendali : ‘);

s := chr(27) +’,'+chr(26)+’,'+chr(24)+’,'+chr(25);
BuatKotak(482,370,639,479,lightgray,white);
settextjustify(lefttext,centertext);
settextstyle(defaultfont,horizdir,1);
outtextxy(485,380,”+s+’ : geser ‘);
outtextxy(565,395,’layar’);
outtextxy(485,415,’Tab     : pindah ‘);
outtextxy(565,430,’window’ );
outtextxy(485,449,’Enter   : eksekusi’);
outtextxy(485,469,’Esc     : keluar’);

{ membuat sumbu x dan y }
for i := 50 to 475 do putpixel((1+479) div 2,i,lightgray);
for i := 8 to 475 do putpixel(i,(43+479) div 2,lightgray);

matriksSebarang(Ms,-1,0,0,0,-1,0);

GambarPoligon(Xv,Yv,1,1,3,1,3,3,1,3,red);

{ perkalian matriks untuk transformasi poligon }
for n := 1 to 4 do begin
for i := 1 to 3 do begin
vekhasil[i] := 0;
counter := 1;
for j := 1 to 3 do begin
if counter = 1 then vek[j] := Xw[n] else
if counter = 2 then vek[j] := Yw[n] else
If counter = 3 then vek[j] := 1;
vekhasil[i] := vekhasil[i] + vek[j] * Ms[j,i];
inc(counter);
end;
end;
Xw[n] := vekhasil[1];
Yw[n] := vekhasil[2];
end;

gambarPoligon(xv,yv,Xw[1],Yw[1],Xw[2],Yw[2],Xw[3],Yw[3],Xw[4],Yw[4],yellow);

KerjakanTransformasi;
closegraph;
end.

TRANSFORMASI

uses graph,crt;
type tmatriks = array[1..3,1..3] of real;
tvektor  = array[1..3] of real;
ttitik   = array[1..4] of real;
var gd,gm,i,j,counter,n     : integer;
XVmin,XVmax,
YVmin,YVmax,
XWmin,XWmax,
YWmin,YWmax : integer;
ms          : tmatriks;
vek,vekhasil         : tvektor;
Xw,Yw,Xv,Yv : ttitik;

procedure BuatKotak(x1,y1,x2,y2 : integer; warnakotak,warnabatas : word);
begin
setcolor(warnabatas);   {menentukan warna batas }
rectangle(x1,y1,x2,y2);   { membuat kotak }
setfillstyle(solidfill,warnakotak);   { menentukan warna kotak }
floodfill((x1+x2) div 2,(y1+y2) div 2,warnabatas);   { proses pewarnaan kotak }
end;

procedure gambarPoligon(segiX : integer);
begin
end;

begin { program utama }
{inisialisasi grafik }
gd := detect;
initgraph(gd,gm,’c:\tpascal7\bgi’);

BuatKotak(1,1,479,479,blue,cyan);   { window tempat penggambaran obyek transformasi }
BuatKotak(482,1,639,479,green,lightcyan);   { window tempat modifikasi matriks transformasi }

{ membuat sumbu x dan y }
for i := 5 to 475 do begin
putpixel((1+479) div 2,i,lightgray);
putpixel(i,(1+479) div 2,lightgray);
end;

{ matriks transformasi }
Ms[1,1] := -1;Ms[1,2] := 0;Ms[1,3] := 0;
Ms[2,1] := 1.5;Ms[2,2] := 1;Ms[2,3] := 0;
Ms[3,1] := 3;Ms[3,2] := 1;Ms[3,3] := 1;

{ titik-titik poligon }
Xw[1] := 1;Xw[2] := 3;Xw[3] := 3;Xw[4] := 1;
Yw[1] := 1;Yw[2] := 1;Yw[3] := 3;Yw[4] := 3;

{ transformasi window ke viewport }
XVmin := 1;XVmax := 479;   { titik-titik batas viewport }
YVmin := 1;YVmax := 479;

XWmin := -10;XWmax := 10;  { titik-titik batas window }
YWmin := -10;YWmax := 10;
{ rumus mwnentukan letak titik-titik x dan y di viewport }
for i := 1 to 4 do begin
Xv[i] := XVmin + (Xw[i]-XWmin)/(XWmax-XWmin)*(XVmax-XVmin);
Yv[i] := YVmax – (Yw[i]-YWmin)/(YWmax-YWmin)*(YVmax-YVmin);
end;
{ menggambar poligon }
line(round(Xv[1]),round(Yv[1]),round(Xv[2]),round(Yv[2]));
line(round(Xv[2]),round(Yv[2]),round(Xv[3]),round(Yv[3]));
line(round(Xv[3]),round(Yv[3]),round(Xv[4]),round(Yv[4]));
line(round(Xv[4]),round(Yv[4]),round(Xv[1]),round(Yv[1]));
{ perkalian matriks untuk transformasi poligon }
for n := 1 to 4 do begin
for i := 1 to 3 do begin
vekhasil[i] := 0;
counter := 1;
for j := 1 to 3 do begin
if counter = 1 then vek[j] := Xw[n] else
if counter = 2 then vek[j] := Yw[n] else
If counter = 3 then vek[j] := 1;
vekhasil[i] := vekhasil[i] + vek[j] * Ms[j,i];
inc(counter);
end;
end;
Xw[n] := vekhasil[1];
Yw[n] := vekhasil[2];
end;
{idem sebaiknya dibuat prosedur }
for i := 1 to 4 do begin
Xv[i] := XVmin + (Xw[i]-XWmin)/(XWmax-XWmin)*(XVmax-XVmin);
Yv[i] := YVmax – (Yw[i]-YWmin)/(YWmax-YWmin)*(YVmax-YVmin);
end;
{ menggambar poligon }
setcolor(yellow);
line(round(Xv[1]),round(Yv[1]),round(Xv[2]),round(Yv[2]));
line(round(Xv[2]),round(Yv[2]),round(Xv[3]),round(Yv[3]));
line(round(Xv[3]),round(Yv[3]),round(Xv[4]),round(Yv[4]));
line(round(Xv[4]),round(Yv[4]),round(Xv[1]),round(Yv[1]));

readln;
closegraph;
end.

ANGKA KE TULISAN – V.2

uses crt;
var sBilangan,sJenis,sJenisTotal,sDigitDepan,sBilPot : string;
iDigit : integer;
j,k,bTriplet,bTriplet2,iDigitDepan,i : byte;
y,HurufDitulis,panjang,awal,akhir : byte;
sBilPotKat : string;

function BilanganValid(Bilangan : string) : boolean;
var i : byte;
valid,nilai : boolean;
begin
if length(Bilangan) > 30 then BilanganValid := false
else
begin
nilai := true;
for i := 1 to length(Bilangan) do
begin
if (ord(Bilangan[i]) >= 48) and (ord(Bilangan[i]) <= 57) then valid := true
else valid := false;
nilai := (nilai and valid);
end;
BilanganValid := nilai;
end;
end;

function DigitBernilai(Kar : char) : boolean;
var nilai : boolean;
begin
if Kar <> ’0′ then nilai := true else nilai := false;
DigitBernilai := nilai;
end;

function TripletBernilai(Kar : string) : boolean;
var nilai : array[1..5] of boolean;
i  : byte;
nilai2 : boolean;
begin
nilai2 := false;
for i := 1 to length(Kar) do
begin
if Kar[i] <> ’0′ then  nilai[i] := true else nilai[i] := false;
nilai2 := (nilai2 or nilai[i]);
end;
TripletBernilai :=  nilai2;
end;

function UbahKeKata(sBil : string) : string;
var i,j  : byte;
kata : string;
begin
kata := ”;
i := 1;
while i <= length(sBil) do
begin
{ Untuk bilangan dua digit dimana digit pertama = 1}
if (sBil[i] = ’1′) and (length(sBil)-i = 1) then
begin
case sBil[i+1] of
’0′ : kata := kata + ‘sepuluh ‘;
’1′ : kata := kata + ‘sebelas ‘;
’2′ : kata := kata + ‘dua belas ‘;
’3′ : kata := kata + ‘tiga belas ‘;
’4′ : kata := kata + ‘empat belas ‘;
’5′ : kata := kata + ‘lima belas ‘;
’6′ : kata := kata + ‘enam belas ‘;
’7′ : kata := kata + ‘tujuh belas ‘;
’8′ : kata := kata + ‘delapan belas ‘;
’9′ : kata := kata + ‘sembilan belas ‘;
end;
i := i + 1;
end else
begin
case sBil[i] of
’0′ : kata := kata + ”;
’1′ : if i <> length(sBil) then kata := kata + ‘se’
else kata := kata + ‘satu ‘;
’2′ : kata := kata + ‘dua ‘;
’3′ : kata := kata + ‘tiga ‘;
’4′ : kata := kata + ‘empat ‘;
’5′ : kata := kata + ‘lima ‘;
’6′ : kata := kata + ‘enam ‘;
’7′ : kata := kata + ‘tujuh ‘;
’8′ : kata := kata + ‘delapan ‘;
’9′ : kata := kata + ‘sembilan ‘;
end;
case (length(sBil)-i) of
1 : if DigitBernilai(sBil[i]) = true then kata := kata + ‘puluh ‘;
2 : if DigitBernilai(sBil[i]) = true then kata := kata + ‘ratus ‘;
end;
end;
i := i + 1;
end;
UbahKeKata := kata;
end;

begin
clrscr;
sBilangan   := ”;
sJenis      := ”;
sJenisTotal := ”;
sDigitDepan := ”;
write(‘Sembarang bilangan : ‘);readln(sBilangan);

if BilanganValid(sBilangan) = true then
begin
iDigit := length(sBilangan);
bTriplet := iDigit div 3;
iDigitDepan := iDigit – (bTriplet * 3);
panjang := iDigitDepan;
awal := 1;

if (iDigitDepan <> 0) then
begin
akhir := iDigitDepan;
bTriplet := bTriplet + 1;
end
else
akhir := 3;

bTriplet2 := bTriplet-1;

for i := 1 to bTriplet  do
begin
sBilPot := copy(sBilangan,awal,akhir);
sBilPotKat := UbahKeKata(sBilPot);
sJenisTotal := sJenisTotal + sBilPotKat;
{      if (bTriplet2 >= 0) and (bTriplet2 <= 9) then
begin}
case bTriplet2 of
0 : if TripletBernilai(sBilPot) = true then sJenis := ” else sJenis := ”;
1 : if TripletBernilai(sBilPot) = true then sJenis := ‘ribu ‘ else sJenis := ”;
2 : if TripletBernilai(sBilPot) = true then sJenis := ‘juta ‘ else sJenis := ”;
3 : if TripletBernilai(sBilPot) = true then sJenis := ‘milyard ‘ else sJenis := ”;
4 : if TripletBernilai(sBilPot) = true then sJenis := ‘trilyun ‘ else sJenis := ”;
5 : if TripletBernilai(sBilPot) = true then sJenis := ‘ributrilyun ‘ else sJenis := ”;
6 : if TripletBernilai(sBilPot) = true then sJenis := ‘milyardtrilyun ‘ else sJenis := ”;
7 : if TripletBernilai(sBilPot) = true then sJenis := ‘trilyuntrilyun ‘ else sJenis := ”;
8 : if TripletBernilai(sBilPot) = true then sJenis := ‘ribu trilyuntrilyun ‘ else sJenis := ”;
9 : if TripletBernilai(sBilPot) = true then sJenis := ‘milyard trilyuntrilyun ‘ else sJenis := ”;
end;
{      end;}

sJenisTotal := sJenisTotal + sJenis;
if (iDigitDepan <> 0) and (i = 1) then awal := awal + iDigitDepan
else awal := awal + 3;
akhir := 3;
bTriplet2 := bTriplet2 – 1;
end;

gotoxy(10,5);write(‘Bilangan    : ‘,sBilangan);
gotoxy(10,6);write(‘Dalam Kata  : ‘);
if length(sJenisTotal) < 51 then
begin
gotoxy(25,6);write(sJenisTotal);
readln;
end
else
begin
i := 1;
HurufDitulis := 1;
y := 6;
gotoxy(24,y);
if length(sJenisTotal) < 255 then
begin
while i <= length(sJenisTotal) do
begin
write(sJenisTotal[i]);
if (HurufDitulis > 40) and (sJenisTotal[i] = ‘ ‘) then
begin
HurufDitulis := 1;
y := y + 1;
gotoxy(24,y);
end;
i := i + 1;
HurufDitulis := HurufDitulis + 1;
end;
end
else
begin
gotoxy(24,6);write(‘Angkamu panjang banget,lebih 255 karakter.’);
gotoxy(24,7);write(‘Maaf belum tertangani.’);
end;
readln;
end;
end
else
begin
writeln(‘Bilangan yang anda masukkan tidak benar’);
writeln(‘Ada pengetikan angka yang salah dengan’);
writeln(‘karakter lain. Or bilangannya kegedean.’);
readln;
end;
end.

Follow

Get every new post delivered to your Inbox.