Disusun oleh:
Doni Priadi (1041160045)
A. Tujuan :
Membuat grafik gelombang sinus dan kotak
B. Teori Dasar :
Penghasil garis (line generator) adalah prosedur yang digunakan
untuk menghasilkan/memproduksi bentuk garis yang tersusun dari titik-titik
elemen gambar (pixel).
Pada prinsipnya sebuah garis hanyalah kumpulan dari titik-titik yang
digambar secara kontinu dan linier. Salah satu algoritma yang dapat
digunkan untuk membuat garis adalah algoritma DDA (digital differential
analyzer) dengan pseudo algoritm sebagai berikut.
Persamaan garis luurs dengan koordinat cartesius adalah
y=m.x + b
m= y1-m.x1
Pemilihan digunakan untuk mengarahkan perjalanan suatu proses. Pemilihan
dapat diibaratkan sebagai katup atau kran yang mengatur jalannya air. Bila katup
terbuka maka air akan mengalir dan sebaliknya bila katup tertutup air tidak akan
mengalir atau akan mengalir melalui tempat lain. Fungsi penyeleksian kondisi penting
artinya dalam penyusunan bahasa C, terutama untuk program yang kompleks.
Struktur ini digunakan jika kondisinya hanya 2.
if (kondisi)
{
/* aksi 1 jika kondisi terpenuhi*/ ;
}
else
{
/* aksi 2 jika kondisi tidak terpenuhi*/
}
C. Flowchart
start
Input biner:
1010101010101010
if(biner[i]=='1'){
Canvas->MoveTo(x+(i-1)*a,y-b);
Canvas->LineTo(x+i*a,y-b);
}
else{
Canvas->MoveTo(x+(i-1)*a,y);
Canvas->LineTo(x+i*a,y);
}
if(biner[i]!=biner[i+1])
{
Canvas->MoveTo(x+i*a,y-b);
Canvas->LineTo(x+i*a,y);
}
for(i=1;i<=l;i++)
Gelombang
kotak
end
Gelombang sinus
start
Membuat gelombang
sinus:
sy = sin(sx/3.14/10)*100;
for(sx=1;sx<lebar33;sx++)
Grafik sinus
end
Gelombang
kotak
D.Script Program:
1. Program grafik gelombang sinus dan kotak
//--------------------------------------------------------------------------#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include "UnitGambarCanvas.h"
//--------------------------------------------------------------------------#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------void __fastcall TForm1::BersihkanCanvas()
{
Canvas->Brush->Style = bsSolid;
Canvas->Brush->Color = clWhite;
Canvas->FillRect(Rect(0,0,ClientWidth,ClientHeight));
}
void __fastcall TForm1::SetDefault()
{
Canvas->Pen->Width = 1;
Canvas->Pen->Mode = pmCopy;
Canvas->Pen->Style = psSolid;
Canvas->Pen->Color = clBlack;
}
void __fastcall TForm1::STYLE1Click(TObject *Sender)
{
//membuat 7 elemen array tipe TPenStyle
TPenStyle JENIS[7] = {psSolid, psDash, psDot, psDashDot,
psDashDotDot,
psClear, psInsideFrame};
int posisiY = 20;
//deklarasi posisiY dengan nilai awal 20
BersihkanCanvas();
SetDefault();
for(int j=0;j<7;j++){
Canvas->Pen->Style = JENIS[j];
Canvas->MoveTo(100,posisiY);
Canvas->LineTo(ClientWidth - 10, posisiY);
posisiY += 20;
}
Canvas->TextOut(1,10,"psSolid");
Canvas->TextOut(1,30,"psDash");
Canvas->TextOut(1,50,"psDot");
Canvas->TextOut(1,70,"psDashDot");
Canvas->TextOut(1,90,"psDashDotDot");
Canvas->TextOut(1,110,"psClear");
Canvas->TextOut(1,130,"psInsideFrame");
}
//--------------------------------------------------------------------------void __fastcall TForm1::FormResize(TObject *Sender)
{
Invalidate();
}
//--------------------------------------------------------------------------void __fastcall TForm1::COLOR1Click(TObject *Sender)
{
BersihkanCanvas();
SetDefault();
for(int k=0;k<100;k++){
Canvas->Pen->Color =
RGB(random(255),random(255),random(255));
Canvas->MoveTo(random(ClientWidth),random(ClientHeight));
Canvas->LineTo(random(ClientWidth),random(ClientHeight));
}
}
//--------------------------------------------------------------------------void __fastcall TForm1::WIDTH1Click(TObject *Sender)
{
int posisiY = 20;
BersihkanCanvas();
SetDefault();
for(int i=1;i<=7;i++){
Canvas->TextOut(10,posisiY,"Width = "+AnsiString(i));
Canvas->Pen->Width = i;
Canvas->MoveTo(80,posisiY+8);
Canvas->LineTo(ClientWidth-10,posisiY+8);
posisiY += 20;
}
}
//---------------------------------------------------------------------------
//ini sb.x
int sx,sy;
for(sx=1;sx<lebar-33;sx++){
sy = sin(sx/3.14/10)*100;
Canvas->Pixels[sx+20][tinggi/2-floor(sy)] = clRed;
}
}
//--------------------------------------------------------------------------void __fastcall TForm1::KOTAK1Click(TObject *Sender)
{
int tinggi = ClientHeight;
int lebar = ClientWidth;
int posisiX =20;
int i;
BersihkanCanvas();
SetDefault();
// menggambar sumbu
Canvas->MoveTo(20, tinggi/2);
Canvas->LineTo(lebar-10,tinggi/2);
Canvas->MoveTo(20,10);
Canvas->LineTo(20,tinggi-10);
//menggambar kotak
AnsiString biner=Edit1->Text;
int l=Edit1-> MaxLength;
int y = tinggi/2;
int x = posisiX;
int a = 600/l;
int b = 100;
Canvas->Pen->Color=clRed;
for(i=1;i<=l;i++){
if(biner[i]=='1'){
Canvas->MoveTo(x+(i-1)*a,y-b);
Canvas->LineTo(x+i*a,y-b);
}
else{
Canvas->MoveTo(x+(i-1)*a,y);
Canvas->LineTo(x+i*a,y);
}
if(biner[i]!=biner[i+1])
{
Canvas->MoveTo(x+i*a,y-b);
Canvas->LineTo(x+i*a,y);
}
}Canvas->Pen->Color=clBlack;
}
//---------------------------------------------------------------------------
E. Program
1.1
1.2Tampilan pen-> color
F. kesimpulan
untuk membuat gelombang sinus dan kotak digunakan looping untuk
membentuk garis dengan batas yang ditentukan. input untuk gelombang kotak
harus sama dengan jumlah maxlength yang ditentukan
DAFTAR PUSTAKA
FACHRURROZI, M. KONSEP DAN APLIKASI PEMROGRAMAN MENGGUNAKAN
BORLAND C++ BUILDER 6