Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran

Slides:



Advertisements
Presentasi serupa
GRAPHICAL SOLUTION OF LINEAR PROGRAMMING PROBLEMS
Advertisements

Grafika Komputer (TIZ10)
Hidden Surface Removal (HSR)
Grafika Komputer (TIZ10)
Grafika Komputer (TIZ10)
Algoritma Dasar Dalam membuat suatu program komputer, menyusun algoritma adalah langkah pertama yang harus dilakukan Dalam membuat algoritma dapat digunakan.
Grafika Komputer (TIZ10)
PEMBANGKITAN CITRA GRAFIK Dosen :Dewi Octaviani, S.T, M.C.s
BENTUK-BENTUK GEOMETRI Dosen :Dewi Octaviani, S.T, M.C.s
GRAFIKA KOMPUTER ATRIBUT OUTPUT PRIMITIF
D3 Manajemen Informatika S1 Sistem Informasi
KOMPUTER GRAFIK Algoritma Garis Naïve dan DDA
Komputer Grafik Rudy Gunawan
Presented By : Group 2. A solution of an equation in two variables of the form. Ax + By = C and Ax + By + C = 0 A and B are not both zero, is an ordered.
QUIZZ 1 T0074 Diketahui titik awal dan akhir sebuah garis berturut-turut adalah (2,1) dan (5,7). Bila persamaan garis direpresentasikan oleh persamaan.
S1 Teknik Informatika Disusun Oleh Dr. Lily Wulandari
Geometri Primitive (Lingkaran)
Fill Area dan Teks Grafis
Grafika Komputer dan Visualisasi Disusun oleh : Silvester Dian Handy Permana, S.T., M.T.I. Fakultas Telematika, Universitas Trilogi Pertemuan 15 : Kurva.
Clipping Edy Mulyanto.
Materi Kuliah 1. Pertemuan ke : 1 Pengenalan Komputer dan Pemrograman
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Pembentuk Grafik Grafik dapat terbentuk dengan berbagai pola : Titik
Algoritma Pemrograman 2A
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Geometri Primitive.
Gambar ini menjelaskan prosedur untuk pengisian solid dari poligon Gambar ini menjelaskan prosedur untuk pengisian solid dari poligon. Titik potong.
Algoritma Garis DDA dan Bressenham
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Konsep 3D dan Representasi Objek 3D
Dasar teori dan algoritma grafika komputer
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Fenty Tristanti Julfia, M.Kom
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Viewing dan Clipping 2 Dimensi
Pertemuan II – Grafika Komputer
Grafika Komputer Pengenalan Grafika Komputer &
TUGAS_1 tidak bisa di buka
Algoritma Garis Bressenham dan Mid Point
Algoritma Bentuk Primitif
Analisis dan Perancangan Algoritma Kuliah 4 : Asymptotic pd Kasus
AP2A Perulangan & Array PJ : Wawan Setiawan 07
D3 Manajemen Informatika S1 Sistem Informasi
KUG1E3/ Pemrograman Terstruktur 1
Seleksi Kondisi merupakan perintah yang memungkinkan pemilihan atas perintah yang akan dijalankan sesuai dengan kondisi tertentu. Operator yang digunakan.
MENGGAMBAR DENGAN PIXEL (KONVERSI SCAN)
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
ALGORITHMA GARIS Hieronimus Edhi Nugroho, M.Kom.
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Grafika Komputer Cliping 2 D.
Pertemuan II – Grafika Komputer
Pembangkitan Citra Grafik Dosen :Dewi Octaviani, S.T, M.C.s
Candra asus umbar wahono
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Algoritma dan Pemrograman STRUKTUR ALGORITMA (3)
Topik Perkuliahan Pengantar Penggambaran objek primitif
Ihr Logo Dasar teori dan algoritma grafika komputer.
Pertemuan 2 – Pendahuluan 2
D3 Manajemen Informatika S1 Sistem Informasi
Geometri Primitive (Lingkaran)
D3 Manajemen Informatika S1 Sistem Informasi
D3 Manajemen Informatika S1 Sistem Informasi
BAHAN AJAR Nama Mata Kuliah : Laboratorium Aplikasi Komputer 1
Aplikasi Graph Minimum Spaning Tree Shortest Path.
MODUL.1 DATA SPASIAL DAN DATA NON SPASIAL
D3 Manajemen Informatika 2 DB 23
Transcript presentasi:

Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran COMPUTER GRAPHICS D10K-5C01 GK02: Penggambaran Objek-objek Primitif Dr. Setiawan Hadi, M.Sc.CS. Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran

Topik Perkuliahan Pengantar Penggambaran objek primitif Algoritma penggambaran garis Dasar, DDA, Bresenham Algoritma penggambaran lingkaran Dasar, Polar, Bresenham Algoritma pengisi region

Elemen Pembentuk Grafik

Objet Primitive menurut OpenGL

Objek-objek Primitif 3D (Autodesk)

Titik Perhatikan bahwa sistem koordinat dalam pemrograman grafis berbeda dengan model koordinat kartesius

Penggambaran Objek Primitif Kita akan mendiskusikan algoritma untuk Menggambar garis Menggambar lingkaran Menggambar Poligon Konsep tentang Filling

Garis Masalah: diberikan dua piksel P(xP, yP) dan Q(xQ, yQ) pada bidang 2D, bagaimana cara terbaik untuk menggambarkan garis yang melalui kedua titik tersebut ? Asumsi: xP<xQ, yP<yQ. (kasus-kasus lain akan ditangani dengan sedikit modifikasi) Kendala: Layar raster merupakan grid integer Q Q ??? P P

Penggambaran Garis Jaggies = Aliasing

Algoritma Penggambaran Garis Algoritma Dasar Algoritma DDA Algoritma Bresenham

Algoritma Dasar Berdasarkan pada persamaan garis Jika diketahui dua buah titik P(x1,y1) dan Q(x2,y2) maka Algoritma: Untuk setiap interval Δx terdapat nilai korespondensi y dengan interval Δy

Contoh Algoritma Dasar Soal: Diketahui dua buah titik A(2,1) dan B(6,4). Tentukan titik-titik dijital yang dilalui oleh garis yang melalui kedua titik tersebut! Jawab: x y [y] 2 1.00 1 3 1.75 4 2.50 5 3.25 6 4.00

Latihan Tentukan koordinat titik-titik dijital untuk garis yang dibentuk oleh dua titik sebagai berikut: (-5,5) dan (1,2) (4,3) dan (8,-2) (2,3) dan (5,3) (2,3) dan (2,5) (6,4) dan (2,1) Gunakan algoritma DDA dan Bresenham untuk menentukan titik-titik dijital antara (-3,3) dan (-1,3) (7,-1) dan (-4,-6) (-3,3) dan (-1,-3)

DDA : Digital Differential Analyzer Untuk meningkatkan kualitas penggambaran garis Slope (m) sebuah garis bisa positif atau negatif Keuntungan DDA: Lebih cepat dari cara sebelumnya Beban komputasi lebih ringan (tanpa perkalian) Arah increment bisa ke dua arah (x atau y) Kondisi Langkah m<=1, KIKA Δx=1, yi+1=yi+m m<=1, KAKI Δx=-1, yi+1=yi+m m>1, KIKA Δy=1, xi+1=xi+1/m m>1, KAKI Δy=-1, xi+1=xi-1/m

Algoritma DDA Algoritma: Inputkan (x1,y1) dan (x2, y2) Hitung dx dan dy If |dx| > |dy| then s=|dx| else s=|dy| Δx=dx/s; Δy=dy/s Set x=x1; y=y1 x=x+ Δx; y=y+ Δy Lakukan langkah ke 6 sebanyak s kali Contoh: Tentukan dengan algorima DDA titik-titik dijital yang melalui garis yang dibentuk oleh titik (2,1) dan (6,4) Latihan: Lihat sebelumnya

Algoritma DDA

Algoritma Bresenham Penentuan koordinat menggunakan ‘integer arithmetic’ Di-optimasi berdasarkan jarak kedekatan dengan posisi grid

Algoritma Bresenham Hitung Δx=x2–x1 dan Δy=y2-y1 Hitung Δa dan Δb Δa=|Δx| if |Δx| ≥|Δy| else |Δy| Δb=|Δy| if |Δx| ≥|Δy| else |Δx| Hitung = 2 Δb – Δa Tentukan m1 dan m2 m1=M3 jika |Δx| ≥ |Δy| dan Δx ≥0 m1=M5 jika |Δx| < |Δy| dan Δx <0 m1=M7 jika |Δx| ≥ |Δy| dan Δx <0 m1=M1 jika |Δx| < |Δy| dan Δx ≥0 m2=M2 jika Δx ≥ 0 dan Δy ≥ 0 m2=M4 jika Δx ≥ 0 dan Δy < 0 m2=M6 jika Δx <0 dan Δy <0 m2=M8 jika Δx < 0 dan Δy ≥ 0 Jalankan m2 jika  ≥ 0 lalu modifikasi = +2 Δb-2 Δa Jalankan m1 jika  < 0 lalu modifikasi = +2 Δb Ulangi langkah 5 sampai mencapai titik tujuan (x2, y2) M8 M1 M2 M7 M3 M6 M5 M4

Algoritma Bresenham procedure bres1(x1,y1,x2,y2:integer); Var dx, dy, x, y, x_end, p, da, db, m1, m2 : integer; begin dx := x2-x1; dy := y2-y1; if abs(dx)>=abs(dy) then da:=abs(dx) else da:=abs(dy); if abs(dx)>=abs(dy) then db:=abs(dy) else db:=abs(dx); if (abs(dx)>=abs(dy)) and (dx>=0) then m1:=3; if (abs(dx)>=abs(dy)) and (dx<0) then m1:=7; if (abs(dx)<abs(dy)) and (dy>=0) then m1:=1; if (abs(dx)<abs(dy)) and (dy<0) then m1:=5; if (dx>=0) and (dy>=0) then m2:=2; if (dx>=0) and (dy<0) then m2:=4; if (dx<0) and (dy<0) then m2:=6; if (dx<0) and (dy>=0) then m2:=8; p := 2 * db - da;

Agoritma Bresenham (lanj.) x:=x1; y:=y1; set_pixel(x,y); while (x <> x2) or (y<>y2) begin if p>=0 then p := p + 2*db - 2*da; case m2 of 2:begin x:=x+1;y:=y+1;end; 4:begin x:=x+1;y:=y-1;end; 6:begin x:=x-1;y:=y-1;end; 8:begin x:=x-1;y:=y+1;end; end; end else begin case m1 of 1:y:=y+1; 3:x:=x+1; 5:y:=y-1; 7:x:=x-1; end; p := p + 2* db; set_pixel(x,y);

PENGGAMBARAN LINGKARAN Problem: Find the coordinates of the pixels that best draw an origin-centered circle F(x, y) = x2 + y2 - r2 = 0 Constraint: The raster screen is an integer grid Grafika Komputer

ALGORITMA PENGGAMBARAN LINGKARAN Algoritma Dasar (Berdasarkan Persamaan Lingkaran) Algoritma Polar (berdasarkan sifat simetri dan properti lingkaran yaitu pusat dan jari-jari) Algoritma biasa dan polar memiliki kelemahan dalam penampilan lingkaran. Kelemahan ini dieliminasi oleh Algoritma Bresenham

Terlalu banyak perhitungan FLOATING-POINTS Algoritma Sederhana Versi 1: for x = -R to R hitung y = sqrt(r2 – x2) tulisPixel(x, round(y)) tulisPixel(x, round(-y)) Versi 2: For alpha = 0 to 360o tulisPixel(r*cos(alpha), r*sin(alpha)) Terlalu banyak perhitungan FLOATING-POINTS

Representasi Lingkaran

Sifat Simetris Lingkaran

Algoritma Bresenham

Algoritma Bresenham BresenhamCircle(Xc, Yc, R) Set X = 0 and Y = R Set D = 3 – 2R Repeat While (X < Y) Call DrawCircle(Xc, Yc, X, Y) Set X = X + 1 If (D < 0) Then D = D + 4X + 6 Else Set Y = Y –1 D = D + 4(X –Y) + 10 Call Draw Circle(Xc, Yc, X, Y) DrawCircle(Xc, Yc, X, Y) Call Put Pixel(Xc+ X, Yc, + Y) Call PutPixel(Xc-X, Yc, + Y) Call PutPixel(Xc+ X, Yc,-Y) Call PutPixel(Xc-X, Yc,-Y) Call PutPixel(Xc+ Y, Yc, + X) Call PutPixel(Xc-Y, Yc, + X) Call PutPixel(Xc+ Y, Yc,-X) Call PutPixel(Xc-Y, Yc,-X)

Algoritma Mengisi Region Flood-filling Algorithm

Jenis Filling

Boundary filling

Color range

Geometrika Objek

Teknik flood filling data-centric process-centric menggunakan queue untuk mengecek piksel tepi umumnya menerapkan 4-way flood-fill algorithm (why?) tampilan berupa expanding lozenge-shaped fill 4 pixels checked for each pixel filled (8 for an 8-way fill). process-centric menggunakan stack umumnya menerapkan 4-way flood-fill algorithm Tampilan berupa a linear fill with "gaps filled later" behaviour 4 pixels checked for each pixel filled (8 for an 8-way fill) penerapan pada sistem grafis komputer lama/kuno

Penerapan Algoritma Mengisi Rectangle Mengisi Poligon (xmin, ymin) (xmax, ymax) For (y = ymin to ymax of rectangle) For (x = xmin to xmax of rectangle) WritePixel(x, y)

Konsep Mengisi Poligon Find the intersections of the scan line with all edges, sort them in increasing order of x-coordinates: {a1, a2, …, an} = {a, b, c, d} Fill in all pixels between a2k and a2k+1. E.g. those between a and b, and between c and d

Mengisi Ellips atau Lingkaran Scan the raster screen line by line If Line intersects the ellipse/circle twice Draw every pixel from the first intersection until (before) the second intersection If Line intersects only once Draw the intersection pixel

Ilustrasi1

Ilustrasi1

Ilustrasi

Ilustrasi

Program Dasar Floodfill (C++) void ffill(int x,int y,int o_color,int n_color) { if(getpixel(x,y)==o_color) { putpixel(x,y,n_color); ffill(x+1,y,o_color,n_color); ffill(x,y+1,o_color,n_color); ffill(x,y-1,o_color,n_color); ffill(x-1,y,o_color,n_color); ffill(x+1,y+1,o_color,n_color); ffill(x-1,y-1,o_color,n_color); ffill(x-1,y+1,o_color,n_color); ffill(x+1,y-1,o_color,n_color); } } void main() rectangle(50,50,100,100); ffill(55,55,0,3);

Pendekatan Algoritma FloodFIll Scan-line Seed-fill (boundary-fill)

Pendekatan Algoritma FloodFIll Scan-line Seed-fill (boundary-fill)

Pendekatan Algoritma FloodFIll Scan-line (raster-based fill) Seed-fill (boundary-fill)

Seed-fill algorithm

Memilih Seed-point

Algoritma Seed-fill

Neighbours

Beberapa Contoh Program FloodFill dalam C# Akses situs : http://www.codeproject.com/Articles/5133/Flood-Fill-Algorithms-in-C-and-GDI http://www.codeproject.com/Articles/6017/QuickFill-An-efficient-flood-fill-algorithm http://www.codeproject.com/Articles/16405/Queue-Linear-Flood-Fill-A-Fast-Flood-Fill-Algorith

Implementasi Region Filling

Implementasi Region Filling

Implementasi Region Filling

Implementasi Region Filling

Referensi Tentang Region Filling COMP175 Region Filing Lec6 Area Fill Polygon fill