Docstoc

Logo Polban in Java

Document Sample
Logo Polban in Java Powered By Docstoc
					                         LAPORAN TUGAS III
                       KOMPUTER GRAFIK




                                 Disusun oleh :
                           Eri Setiawan (08501009)
                Yudhitaprawesti Shahranuwiragusti (08501035)




Laporan ini ditujukan untuk memenuhi tugas Mata Kuliah Komputer Grafik (Praktik)




       PROGRAM DIPLOMA III TEKNIK INFORMATIKA
    JURUSAN TEKNIK KOMPUTER DAN INFORMATIKA
                 POLITEKNIK NEGERI BANDUNG
                                    2011
                                   KATA PENGANTAR




      Puji syukur kami panjatkan kehadirat Tuhan Yang Maha Esa karena berkat Rahmat-
Nya kami dapat menyelesaikan Laporan Tugas III Komputer Grafik. Shalawat dan salam
tidak lupa kami haturkan kepada nabi besar Muhammad SAW yang telah membawa kita dari
alam kebodohan menuju alam yang terang benderang, berilmu pengetahuan seperti yang
dapat kita rasakan sekarang ini.
      Laporan Tugas III Komputer Grafik ini membahas tentang bagaimana dan seperti apa
metode-metode yang digunakan untuk membuat Logo Polban (3D) dengan bahasa
pemrograman java dan pada kesempatan kali ini kami mencoba mencari solusi dari
beberapa rumus yang telah diturunkan dengan menggunakan teori vektor.
      Tak lupa kami mengucapkan terima kasih, khususnya kepada Bapak Dewa Gede
Parta yang telah membimbing kami dalam menyusun Laporan Tugas III Komputer Grafik
atas segala ide - idenya serta teman-teman yang telah membantu hingga terselesaikannya
laporan ini.
      Kami menyadari bahwa penyusunan Laporan Tugas III Komputer Grafik yang telah
kami buat ini jauh dari kata sempurna. Oleh karena itu, kami mengharapkan kritik dan saran
dari pembaca untuk memperbaiki isi laporan ini. Akhir kata, semoga laporan ini dapat
bermanfaat bagi siapapun yang membaca.




                                                               Bandung, 15 Januari 2011




                                                                        Penyusun
                           DAFTAR ISI



KATA PENGANTAR
DAFTAR ISI
BAB I Pendahuluan
1.1 Latar Belakang
1.2 Tujuan
1.3 Sistematika Laporan
BAB II Pembahasan
2.1 Landasan Teori
2.2 Penyelesaian Masalah
BAB III Penutup
3.1 Kesimpulan & Saran
DAFTAR PUSTAKA
LAMPIRAN
                                         BAB I
                                  PENDAHULUAN


1.1 Latar Belakang


      Perkembangan dunia teknologi informasi saat ini semakin cepat dan sudah memasuki
berbagai bidang terutama dalam bidang pendidikan. Salah satu perkembangan teknologi
informasi yang penting dan semakin dibutuhkan penggunaannya adalah alat pengolah data
(komputer) yang berfungsi untuk menghasilkan informasi yang dibutuhkan. Hal ini didukung
oleh pernyataan yang diutarakan bahwa komputer dapat digunakan untuk mengolah data
yang lebih akurat.
      Dengan adanya komputer sebagai alat pengolah data, maka sesuatu yang dilakukan
secara manual dapat dilakukan dengan komputerisasi. Pada bidang Informasi contohnya
yang memanfaatkan komputer untuk membangun aplikasi-aplikasi dengan berbagai fasilitas
yang ada di komputer itu sendiri. Pada bidang Matematika pun komputer dapat
dimanfaatkan seperti dalam mencari hasil dari persoalan aljabar linear(mencari x dari
beberapa persamaan yang ada). Di bidang Tehnik Informatika inilah komputer dengan
matematika digabung.
      Maka dari itu dalam kajian ini kami mencoba membuat Logo Polban (3D) dengan
menggunakan penyelesaian secara ilmu matematika yang diimplementasikan dengan suatu
pembuatan logika program sehingga Logo Polban (3D) yang merupakan tugas mata kuliah
Komputer Grafik dapat dibuat, sekaligus pembuktian arti dari bidang tehnik informatika itu
sendiri.


1.2 Tujuan


      Tujuan dari pembuatan laporan ini adalah selain untuk memenuhi tugas dari mata
kuliah Komputer Grafik juga untuk memberikan solusi secara matematis dan algoritmis
dalam membuat Logo Polban (3D) bahkan mungkin untuk membuat ruang bangun lainnya
serta diharapkan dengan adanya laporan ini kita mendapatkan pembelajaran seperti apa
Logo Polban (3D) dan bagaimana logika dan pola-pola seperti apa untuk membangunnya.


1.3 Sistematika Penulisan


    KATA PENGANTAR
    DAFTAR ISI
    BAB I PENDAHULUAN
1.1. Latar Belakang
1.2. Tujuan
1.3. Sistematika Penulisan
BAB II PEMBAHASAN
BAB III PENUTUP
DAFTAR PUSTAKA
LAMPIRAN
Abstraksi. Logo Polban (3D) dapat dibentuk dari beberapa pola. Sebelum membuat Logo
Polban (3D) ini, dibutuhkan penentuan titik Logo Polban (2D) yang kemudian akan
diimplementasikan menjadi Logo Polban (3D) dengan menemukan beberapa pola yang
berbeda.
                                       BAB II
                                   PEMBAHASAN

2.1 Landasan Teori
Pada pembuatan Logo Polban (3D) ini kami mengimplementasikan dari teori dasar
trigonometri dan vektor, yakni :


Trigonometri
                                      Sin x = b/c


                                      Cos x = a/c


                                      Tan x = b/a




Hubungan :
   1. Sin2x + Cos2x = 1
   2. Sin x / Cos x = Tan x


Vektor
2.2 Penyelesaian Masalah
Logo Polban 2 Dimensi




                                       c
                                           p d   f
                                                         g
                                                     q       i
                                                                 j
                                                                     m
    b


    e
                                                 n

    h
                              o

    a
                                                                     l



                                       k




Rumus :
p/q = (√5 + 1)/2
p+b = 1/3
a = (cos(7π/6), sin(7π/6))
b = (cos(5π/6), sin(5π/6))
c = (cos(3π/6), sin(3π/6))
d = (c x + p(cos (-π/6)), cy + p(sin (-π/6)))
e = (bx + 1/3(cos (π/2)), by + 1/3(sin (π/2)))
……


Dari persamaan diatas kami bentuk rumus menjadi sedemikian rupa untuk menghasilkan
Logo Polban (2D) :


                                        Rumus pola a, b, c =
                        cos(7π/6-(i-1) x 2(2π/6)- ((j-1) modulus 2) x π/2)
          Rumus pola d, e, f, g, h, i, j =
          |c|+(1/3((i-4)/3)+p) x cos(-π/6)


              Rumus pola k, l, m =
cos(11 π/6+(i-1) x 2 π/6 - ((j-1) modulus 2) x π/2)


               Rumus pola n, o =
          |r| x cos(π /6-((i-15) x π/25))
                                      BAB III
                                    PENUTUP

3.1 Kesimpulan dan Saran
    1. Pola yang kami temukan pada lambang polban ada 4.
    2. Untuk membuat graphic 3 dimensi yang memiliki ketebalan tertentu harus
        menentukan koordinat setiap bangun pada tiap sisi. (depan, belakang atas, bawah,
        samping).
    3. Ada masalah ketika kami membuat lambang polban di java dengan menggunakan
        library javax.media.*, pada saat membuat lambang polban di sumbu z = 0, pertama
        yang tampil di layar adalah bagian lambang yang berada di bawah sumbu x (y<0).
        Tetapi ketika diputar sebesar 180 derajat terhadap sumbu y, yang tampil di layar
        adalah bagian lambang yang berada di atas sumbu y>0).
                                DAFTAR PUSTAKA

Operation, Ganesha.2008.Kumpulan Rumus XII IPA. Bandung : Ganesha Operation.
Lee, A.J..Islamic Star Pattern (PDF).
Source code
package java3dexamples;

import javax.vecmath.*;

import   com.sun.j3d.utils.geometry.*;
import   com.sun.j3d.utils.universe.*;
import   javax.media.j3d.*;
import   com.sun.j3d.utils.behaviors.vp.*;
import   javax.swing.JFrame;



/**
* A simple example for generating an object (a tetrahedron) using
triangles.
*
* @author Frank Klawonn
* Last change 05.07.2005
*/
public class GeomArrayExample extends JFrame
{

  //The canvas to be drawn upon.
  public Canvas3D myCanvas3D;


  public GeomArrayExample()
  {
    //Mechanism for closing the window and ending the program.
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    //Default settings for the viewer parameters.
    myCanvas3D = new
Canvas3D(SimpleUniverse.getPreferredConfiguration());


    //Construct the SimpleUniverse:
    //First generate it using the Canvas.
    SimpleUniverse simpUniv = new SimpleUniverse(myCanvas3D);


    //Default position of the viewer.
    simpUniv.getViewingPlatform().setNominalViewingTransform();


    //The scene is generated in this method.
    createSceneGraph(simpUniv);


    //Add some light to the scene.
    addLight(simpUniv);


    //The following three lines enable navigation through the
scene using the mouse.
    OrbitBehavior ob = new OrbitBehavior(myCanvas3D);
    ob.setSchedulingBounds(new BoundingSphere(new
Point3d(0.0,0.0,0.0),Double.MAX_VALUE));
    simpUniv.getViewingPlatform().setViewPlatformBehavior(ob);


         //Show the canvas/window.
         setTitle("A tetrahedron");
         setSize(700,700);
         getContentPane().add("Center", myCanvas3D);
         setVisible(true);

     }




     public static void main(String[] args)
     {
        GeomArrayExample gae = new GeomArrayExample();
     }




  //In this method, the objects for the scene are generated and
added to
  //the SimpleUniverse.
  public void createSceneGraph(SimpleUniverse su)
  {
     final double b = 2/(3*Math.sqrt(5)+9);
     final double a = 1/3 - b;
     Point3d[] point = new Point3d[44];

    Appearance yellowApp = new Appearance();
    setToMyDefaultAppearance(yellowApp,new
Color3f(0.5f,0.5f,0.0f));


       //The four vertices of the tetrahedron.
//        Point3f[] tetrahedronCoordinates =
//          {
//             new Point3f(0.5f,0.0f,0.0f),
//             new Point3f(-0.5f,0.0f,0.0f),
//             new Point3f(0.0f,0.0f,-0.6f),
//             new Point3f(0.0f,0.7f,0.0f)
//          };
      int index =0;
//      for(int i = index;index<i+3;index++){
//       point[index] = new Point3d(
//                    Math.cos(7*Math.PI/6-index*2*Math.PI/6),
//                    Math.sin(7*Math.PI/6-index*2*Math.PI/6),
//                    0);
//      }
//      for(int i =index;index<i+10;index++){
//       if(index==i+10) break;
//       point[index] = new Point3d(
//               point[2].getX()+(1/3*Math.round((index-
4)/4)+a)*Math.cos(-Math.PI/6),
//               point[2].getY()+(1/3*Math.round((index-
4)/4)+a)*Math.sin(-Math.PI/6),
//               0);
//    index++;
//    if(index==i+10) break;
//    point[index] = new Point3d(
//               point[1].getX()+(1/3*Math.round((index-
4)/4)+1/3)*Math.cos(-Math.PI/2),
//               point[1].getY()+(1/3*Math.round((index-
4)/4)+1/3)*Math.sin(-Math.PI/2),
//               0);
//    index++;
//    if(index==i+10) break;
//    point[index] = point[index-1];
//    index++;
//    if(index==i+10) break;
//    point[index] = new Point3d(
//               point[2].getX()+(1/3*Math.round((index-
4)/4)+1/3)*Math.cos(-Math.PI/6),
//               point[2].getY()+(1/3*Math.round((index-
4)/4)+1/3)*Math.sin(-Math.PI/6),
//               0);
//
//   }
//   point[index] = point[index-1];
//   index++;
//   for(int i = index;index<i+3;index++){
//    point[index] = new Point3d(
//               Math.cos(11*Math.PI/6+(index-i)*2*Math.PI/6),
//               Math.sin(11*Math.PI/6+(index-i)*2*Math.PI/6),
//               0);
//    //Math.cos(11*Math.PI/6+(index-1)*2*Math.PI/6)
//   }
//
//
//   double luas1 = 1/2*(
//         (point[4].getX()*point[5].getY()-
point[5].getX()*point[4].getY())+
//         (point[5].getX()*point[3].getY()-
point[3].getX()*point[5].getY())+
//         (point[3].getX()*point[4].getY()-
point[4].getX()*point[3].getY()));
//   double luas2 = 1/2*(
//         (point[7].getX()*point[8].getY()-
point[8].getX()*point[7].getY())+
//         (point[8].getX()*point[6].getY()-
point[6].getX()*point[8].getY())+
//         (point[6].getX()*point[7].getY()-
point[7].getX()*point[6].getY()));
//   double luas3 = 1/2*(
//         (point[10].getX()*point[13].getY()-
point[13].getX()*point[10].getY())+
//         (point[13].getX()*point[9].getY()-
point[9].getX()*point[13].getY())+
//         (point[9].getX()*point[10].getY()-
point[10].getX()*point[9].getY()));
//     double r = Math.sqrt(2*(luas1+luas2+luas3)/(22/7));
//
//     for(int i =index;index<i+25;index++){
//      point[index] = new Point3d(
//                 r*Math.cos(Math.PI/6-((index-i)*Math.PI/25)),
//                 r*Math.sin(Math.PI/6-((index-i)*Math.PI/25)),
//                 0);
//
////         r*Math.cos(Math.PI/6-((index-15)*Math.PI/25))
//   }
//   point[index] = point[0];
    //The four faces (triangles) of the tetrahedron.
//     int coordIndices[] =
//       {
//          0,3,1,//It is interesting to see what happens when
0,3,1 is changed to 0,1,3.
//          0,2,3,
//          0,1,2,
//          1,3,2
//       };


   point[index++]=new Point3d(-0.866025403784439,-0.5,0);
   point[index++]=new Point3d(-0.866025403784438,0.5,0);
   point[index++]=new Point3d(6.1257422745431E-17,1,0);
   point[index++]=new
Point3d(0.178411044886545,0.896994335208351,0);
   point[index++]=new Point3d(-
0.866025403784438,0.166666666666667,0);

   point[index++]=new Point3d(-
0.866025403784438,0.166666666666667,0);
   point[index++]=new
Point3d(0.288675134594813,0.833333333333333,0);
   point[index++]=new
Point3d(0.467086179481358,0.730327668541684,0);
   point[index++]=new Point3d(-0.866025403784438,-
0.166666666666666,0);

   point[index++]=new Point3d(-0.866025403784438,-
0.166666666666666,0);
   point[index++]=new
Point3d(0.577350269189626,0.666666666666667,0);
   point[index++]=new
Point3d(0.755761314076171,0.563661001875018,0);
   point[index++]=new Point3d(-0.866025403784438,-0.5,0);

   point[index++]=new   Point3d(-0.866025403784438,-0.5,0);
   point[index++]=new   Point3d(-2.45018848959999E-15,-1,0);
   point[index++]=new   Point3d(0.866025403784439,-
0.499999999999999,0);
   point[index++]=new   Point3d(0.866025403784439,0.5,0);

   point[index++]=new
Point3d(0.362719046974755,0.209415939411079,0);
   point[index++]=new
Point3d(0.386105675796728,0.162303881146605,0);
   point[index++]=new
Point3d(0.403403187463036,0.112632193720809,0);
   point[index++]=new
Point3d(0.414338789881668,0.0611842293168258,0);
   point[index++]=new
Point3d(0.418740022069871,0.00877135306682889,0);
   point[index++]=new Point3d(0.416537473966868,-
0.0437798526607843,0);
   point[index++]=new Point3d(0.407765881071981,-
0.0956406239591205,0);
   point[index++]=new Point3d(0.392563576645059,-
0.145993085484682,0);
   point[index++]=new Point3d(0.371170310108331,-
0.194043148840108,0);
   point[index++]=new Point3d(0.343923466054799,-
0.239033035822567,0);
   point[index++]=new Point3d(0.311252743491662,-
0.280253229038691,0);
   point[index++]=new Point3d(0.273673379230285,-
0.317053661417709,0);
   point[index++]=new Point3d(0.231778022293895,-
0.348853968157494,0);
   point[index++]=new Point3d(0.18622738748845,-
0.375152639424176,0);
   point[index++]=new Point3d(0.137739835535464,-
0.395534929461814,0);
   point[index++]=new Point3d(0.0870800440942939,-
0.409679397380726,0);
   point[index++]=new Point3d(0.0350469483386598,-
0.417362976472334,0);
   point[index++]=new Point3d(-0.017538858728307,-
0.418464492104417,0);
   point[index++]=new Point3d(-0.0698480675159218,-
0.412966572717442,0);
   point[index++]=new Point3d(-0.121055730553598,-
0.40095592378444,0);
   point[index++]=new Point3d(-0.170354272405255,-
0.382621960413899,0);
   point[index++]=new Point3d(-0.216966225616372,-
0.35825382016035,0);
   point[index++]=new Point3d(-0.260156491840178,-
0.328235803152414,0);
   point[index++]=new Point3d(-0.299243934777709,-
0.2930413114502,0);
   point[index++]=new Point3d(-0.333612122104134,-
0.253225383212022,0);
   point[index++]=new Point3d(-0.362719046974755,-
0.209415939411079,0);
   point[index++]=new Point3d(-0.866025403784439,-0.5,0);


int stripCount[] = {5,4,4,31};


   GeometryInfo gi = new
GeometryInfo(GeometryInfo.POLYGON_ARRAY);
    gi.setCoordinates(point);
    gi.setStripCounts(stripCount);
      NormalGenerator ng = new NormalGenerator();
      ng.generateNormals(gi);
      GeometryArray te = gi.getGeometryArray();

    //Generate the tetrahedron as a Shape.
    Shape3D tetrahedron = new Shape3D(te,yellowApp);
    //The transformation group of the tetrahedron.
    //The tetrahedron will be rotated a little bit.
    Transform3D tfTetrahedron = new Transform3D();
    tfTetrahedron.rotX(0.4*Math.PI);
    TransformGroup tgTetrahedron = new
TransformGroup(tfTetrahedron);
    tgTetrahedron.addChild(tetrahedron);


//*** The root of the scenegraph. ***
    BranchGroup theScene = new BranchGroup();

      //Add the tetrahedron to the scene.
      theScene.addChild(tgTetrahedron);

      theScene.compile();

      //Add everything to the universe.
      su.addBranchGraph(theScene);

  }


  /**
  * Generates a default surface (Appearance) in a specified
colour.
  *
  * @param app       The Appearance for the surface.
  * @param col       The colour.
  */
  public static void setToMyDefaultAppearance(Appearance app,
Color3f col)
  {
     app.setMaterial(new Material(col,col,col,col,120.0f));
  }



  //Some light is added to the scene here.
  public void addLight(SimpleUniverse su)
  {

      BranchGroup bgLight = new BranchGroup();

    BoundingSphere bounds = new BoundingSphere(new
Point3d(0.0,0.0,0.0), Double.MAX_VALUE);
    Color3f lightColour1 = new Color3f(1.0f,1.0f,1.0f);
    Vector3f lightDir1 = new Vector3f(-1.0f,0.0f,-0.5f);
    DirectionalLight light1 = new DirectionalLight(lightColour1,
lightDir1);
    light1.setInfluencingBounds(bounds);
    Vector3f lightDir2 = new Vector3f(1.0f,0.0f,0.5f);
    DirectionalLight light2 = new DirectionalLight(lightColour1,
lightDir2);
    light2.setInfluencingBounds(bounds);


        bgLight.addChild(light1);
        bgLight.addChild(light2);

        su.addBranchGraph(bgLight);
    }



}

				
DOCUMENT INFO
Categories:
Tags:
Stats:
views:1222
posted:2/24/2011
language:Indonesian
pages:19