Wednesday, October 15, 2014

MEMBUAT DIAGRAM TERNIARY



Mari kita masuk ke diagram terniary, yang sangat banyak sekali dipakai dalam geologi. Buat nya gimana? Sebenarnya inti dari diagram terniary adalah rumus memplot nya. Kita punya 3 data, A B dan C. Dan jumlah ketiganya harus 100%. Untuk posisinya udah dikasih rumusnya yaitu:
Untuk elemen kordinat x = C+A/2
Untuk elemen kordinat y = √3*A/2
Jadi sebenarnya kalian cukup punya data A, B, C, bikin segitiga sesuai selera, lalu plot lah data data sesuai rumus diatas, yang tentu saja pemosisian plot data harus dikoreksi dengan skala dan posisi penggambaran awal, terus susahnya dimana? Susahnya tu buat diagram terniary dengan adanya garis-garis skala di dalam segitiga yang menunjukkan nilai pada masing-masing skala A, B,C. Jadi hal apa saja yang kita butuhkan dalam pembuatan diagram segitiga ini?
1. Data A, B, C
2. Sisi segitiga maunya berapa pixel dengan titik awal penggambaran. Cara bikin segitiga sama sisi tau kan? Intinya kita harus tau kordinat x dan kordinat y nya.
3. interval, yang dalam hal ini adalah 10 %
4. Skala yaitu lebar(sisi)/maxskala – minskala => sisi/100-0
5. nilai phi dan radian, karena kita menggunakan sin dan cos yang perhitungan sudutnya harus dikonversi ke radian. Radian= phi/180
Jadi untuk membuat programnya, kali ini saya menggunakan logika berpikir yang sedikit berbeda dengan yang saya sampaikan di shift selasa 13.00 jadi silahkan dibandingkan saja mana yang lebih mudah dipahami. Kali ini saya mencoba menjelaskannya per line dari program saya, coba dipahami logikanya dan kenapa harus membuat itu. Bukan maksud syntax nya
- header yang saya gunakan
#include <iostream>
#include <graphics.h>
#include <math.h>
#include <fstream>
#include <string>
#include <stdio.h>
- jadi yang pertama dilakukan adalah memasukkan data2nya, cara nya bebas, bisa diinputkan langsung bisa diambil dari file. yang penting harus dalam bentuk array. Kalau yang saya lakukan dibawah ini adalah mengambil dari file terniary.csv dimana didalamnya terdapat angka:
60,20
25,40
Dst
Ingat file terniary.csv harus dalam folder project
Artinya nilai A di belakang “,” dan nilai B setelah “,”
Jadi variabel file1 digunakan untuk membuka file terniary.csv
Variabel nilai dan angka dideklarasikan dalam tipe non-bilangan (huruf)
Mendeklarasikan variabel i (untuk iterasi/looping) dengan nilai awal 1.
Mendeklarasikan  variabel a dan b dengan jumlah room ada 9 yaitu room 0-8
While-} untuk mengambil angka pada setiap baris pada file1, lalu angka tersebut dimasukkan kedalam variabel nilai. Dari variabel nilai dikonversi  kedalam variabel a[i]. Jadi berdasarkan nilai i awal, maka room yang terisi dari a1 – a8.
-------------------------------------------------------------------------------------------------------------------------
Mengembalikan nilai i menjadi i=0
Variabel file1 ditutup lalu file2 membuak terniary.csv kembali
Kali ini dia mengambil angka di setiap barisnya yang setelah “,”
Angka yang terbaca dimasukkan kedalam variable angka lalu di konversi ke nilai b[i]. Untuk kasus ini berarti sesuai nilai i nya, dia mengisi dari room b0-b8. Tapi nilai b0 adalah 60 (lihat data diatas) ini dikarenakan emang karena cara kerja getline nya, sebelum sampai ke kolom ke dua, dia membaca dulu kolom pertama baris pertama. Baru pada saat i=1 – i=8 dia mengsi nilai yang benar.
Lalu file2 ditutup.
-------------------------------------------------------------------------------------------------------------------------

Kita mendeklarasikan variabel c yang memiliki room 8 buah yaitu room 0-8
\t maksudnya adalah tab
Jadi kita melakukan perulangan sebanyak 8 kali dari i =1 hingga 8
Lalu kita menghitung nilai C yaitu 100-nilaia-nilaib
Lalu kita ngeluarin variabel a1 b1 c1, a2 b2 c2,s seterusmya hingga a8, b8, c8
Ini Cuma buat ngecek aja data kita telah masuk dan nilai c sudah terhitung dengan benar atau tidak.
-------------------------------------------------------------------------------------------------------------------------

Lalu kita mendeklarasikan variabel variabel yang kita perlukan. Variabel rad kita perlukan untuk menghitung sin dan cos. Sisi untuk mengetahui sisi segitiga, interval untuk kontrol penskalaannya per 10 persen dan posxa dan posya adalah untuk posisi awal penggambaran. Sisi*(sin(60*rad)) adalah tinggi segita. Ditambah 100 agar puncak segita tidak berada di batas window sebelah atas.
-------------------------------------------------------------------------------------------------------------------------

Yang diatas ini adalah untuk membuat segitiga dan huruf yang menunjukkan titik A B dan C  yang bernilai (100). Kita pindah ke posxa,posya, lalu buat tulisan b(100) lalu kita bikin garis relatif ke (sisi,0), buat lagi tulisan C(100) lalu kita buat garis relatif kearah –sisi/2(kekiri) untuk elemen sumbu xnya dan kearah –sisi*sin(60*rad) untuk sumbu y nya yang tak lain dan tak bukan adalah tinggi segitiga. (lihat gambar segitiga yang diatas ya) lalu kita buat garis lagi ke titik posxa,posya
-------------------------------------------------------------------------------------------------------------------------

Nah sekarang kita perlu membuat garis2 skala didalam segitiga. Perhatikan dengan baik gambar dibawah ini:
Intinya kalau kita mau buat garis kan kita perlu tahu titik awal dan titik tujuannya. Nah disini xB,xA,xC,Xa.yB,yA,yC,Ya merupakan titik awal dan titik tujuan itu. Kita perlu tahu nih titik2 tersebut posisinya dimana. Posisinya dapat kita ketahui dengan rumus diatas. Seharusnya, rumus tersebut harus kalian temukan sendiri polanya. Agar kita dapat menyelesaikan problem ini. namun saat ini coba pahami aja dengan cara memasukkan nilai i kedalam rumusnya. Dengan begitu pasti lebih mudah paham.
Jadi titik (xB,yB) merupakan titik-titik yang mewakili skala 90 – 10 untuk sisi yang disebelah kiri.  Untuk elemen X nya, Skala kan sisi dibagi 100 kan?  Sedangkan untuk elemen ini kita membagi SETENGAH SISI MENJADI 100 dan kita hitung per 10 persennya. Makanya rumusnya menjadi skala/2.  Sedangkan dari elemen sumbu y nya, kita membagi tingginya menjadi 10 bagian,
Begitu juga untuk xA dan yA. Sednagnkan untuk xC, kita membagi sumbu x nya sesuai skala.

Beda xA,yA dengan Xa,Ya apa? Kalau xA,yA kita bergerak dari bawah. Sedangkan Xa,Ya kita bergerak dari atas kebawah pada setiap perulangannya.

Jadi untuk membuat garis untuk nilai sumbu A, kita perlu menghubungkan titik xA,yA dengan xB,yB disetiap perulangannya.
Untuk membuat garis untuk nilai sumbu B, kita perlu menghubungkan titik xB,yB dengan titik xC,yC disetiap perulangannya.
Untuk membuat sumbu C, kita perlu menghubungkan titik xC,yC dengan Xa,Ya disetiap perulangannya.
-------------------------------------------------------------------------------------------------------------------------

Nah untuk diatas kita memplot data kita. Rumusnya sudah dijelaskan diatas dan di slide kuliah juga ada. Dan juga perlu kita kali skala kita.
Setfillstyle adalah untuk mengatur jenis fill (1=penuh) dengan warna yang berbeda2 tergantung nilai i nya.
X adalah posisi data kita di window dalam sumbu xnya
Y adalah posisi data kita dari segi sumbu y
Dan kita membuat elips diposisi x,y dengan radius x adalah 5 dan radius y adalah 5
-------------------------------------------------------------------------------------------------------------------------

Sudah selesai. Ingat pahami logikanya. Semoga membantu
-------------------------------------------------------------------------------------------------------------------------

3 comments:

  1. bang, yang skala probabilistik blm ya? bingung nihhhh

    ReplyDelete
    Replies
    1. udah kok dek tapi baru aja hahha monggo di cek tapi logikanya doang sih

      Delete
  2. mas, kalo membuat diagram terniary di excel bisa gak mas? gimana caranya?

    ReplyDelete