Monday, January 21, 2013

Primitive Drawing

Primitive Drawing merupakan cara mudah untuk menggambar pada layar monitor menggunakan teori geometri sederhana. Macam-macam primitive drawing seperti menggambar sebuah titik, garis, atau gabungan antar keduanya. 

Grafika Komputer berawal dari primitif-primitif dasar grafis (titik, garis, lingkaran dll) yang mendeskripsikan objek-objek yang kemudian akan membentuk suatu citra dua dimensi maupun tiga dimensi. 

Jika dipandang sebagai bitmap (BMP) dalam citra, maka gambar tersebut direpresentasikan sbg :









Tapi jika di pandang sebagai vektor dalam grafik, maka gambar tersebut direpresentasikan sbg :

1. Cara pertama : (3,Timur),(4,Selatan),(3,Barat),(4,Utara).
Kelemahan : kita tidak dapat menentukan titik asal dari vektor.

2. Cara kedua : [(0,1),(0,3)], [(0,3),(4,3)], [(4,3),(4,1)], [(4,1),(0,1)]
Dengan cara ini, maka kita mengetahui titik asal dan tujuan sehingga kita dapat memperoleh arah dan besar dari vektor tersebut.

Arah = tan-1[(Y2-Y1)/(X2-X1)]                       Besar = Ö (X1-X2)2 + (Y1-Y2)2

3. Cara ketiga : Menggunakan informasi atribut segi empat. [(0,1),(4,3)] atau (0,1,4,3) Jika ada suatu gambar yang terdiri dari grafik dan area dapat diisi dengan warna tertentu, maka itu disebut grafik juga. Intinya grafik adalah gambar yang koordinatnya dapat diubah

Berikut akan Saya share script tentang primitive drawing (membuat Titik) dalam Bahasa Java


import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;

import javax.swing.JPanel;
import javax.swing.JFrame;

import java.util.Random;

public class Points extends JPanel {

  public void paintComponent(Graphics g) {
      super.paintComponent(g);

      Graphics2D g2d = (Graphics2D) g;

      g2d.setColor(Color.blue);

      Dimension size = getSize();
      Insets insets = getInsets();

      int w =  size.width - insets.left - insets.right;
      int h =  size.height - insets.top - insets.bottom;

      Random r = new Random();

      for (int i=0; i<1000; i++) {
          int x = Math.abs(r.nextInt()) % w;
          int y = Math.abs(r.nextInt()) % h;
          g2d.drawLine(x, y, x, y);
      }
  }

  public static void main(String[] args) {

      JFrame frame = new JFrame("Points");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.add(new Points());
      frame.setSize(250, 200);
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);
  }
}

Output



EmoticonEmoticon