• Tidak ada hasil yang ditemukan

Perancangan Aplikasi Pencarian Rute Tependek Dengan Metode Floyd Pada Taksi

N/A
N/A
Protected

Academic year: 2019

Membagikan "Perancangan Aplikasi Pencarian Rute Tependek Dengan Metode Floyd Pada Taksi"

Copied!
16
0
0

Teks penuh

(1)

Lampiran

Kode Program

1. Fw_jemput_penumpang.php

<?php

include 'fw.php';

$nama_titik_yang_diklik = "titik_klik";

@$nilai_koordinat_semua_titik = $_POST['nilai_koordinat_semua_titik'];

$nilai_koordinat_semua_titik = json_decode("$nilai_koordinat_semua_titik", true);

@$nilai_koordinat_mobil_sekarang = $_POST['nilai_koordinat_mobil_sekarang']; $nilai_koordinat_mobil_sekarang = json_decode("$nilai_koordinat_mobil_sekarang", true);

//tambahkan kedalam nilai koordinat semua titik //buat id mobil

for ($i = 0; $i < count($nilai_koordinat_mobil_sekarang); $i++) {

$nilai_koordinat_semua_titik["M$i"] = $nilai_koordinat_mobil_sekarang[$i]; $id_mobil[$i] = "M$i";

}

@$nilai_koordinat_path_yang_di_klik = $_POST['nilai_koordinat_path_yang_di_klik']; $nilai_koordinat_path_yang_di_klik =

json_decode("$nilai_koordinat_path_yang_di_klik", true);

//masukkan koordinat yang di klik ke dalam semua koordinat agar dikenali $nilai_koordinat_semua_titik[$nama_titik_yang_diklik] =

$nilai_koordinat_path_yang_di_klik;

@$nama_koordinat_samping_yang_diklik = $_POST['nama_koordinat_samping_yang_diklik']; $nama_koordinat_samping_yang_diklik =

json_decode("$nama_koordinat_samping_yang_diklik", true); @$koordinat_semua_path = $_POST['koordinat_semua_path'];

$koordinat_semua_path = json_decode("$koordinat_semua_path", true);

@$nama_koordinat_samping_mobil = $_POST['nama_koordinat_samping_mobil']; $nama_koordinat_samping_mobil =

(2)

for ($i = 0; $i < count($nilai_koordinat_mobil_sekarang); $i++) {

$koordinat_semua_path[] = Array($nama_koordinat_samping_mobil[$i][0], $id_mobil[$i]);

$koordinat_semua_path[] = Array($id_mobil[$i], $nama_koordinat_samping_mobil[$i][0]);

$koordinat_semua_path[] = Array($nama_koordinat_samping_mobil[$i][1], $id_mobil[$i]);

$koordinat_semua_path[] = Array($id_mobil[$i], $nama_koordinat_samping_mobil[$i][1]);

}

$koordinat_semua_path[] = Array($nama_koordinat_samping_yang_diklik[0], $nama_titik_yang_diklik);

$koordinat_semua_path[] = Array($nama_titik_yang_diklik, $nama_koordinat_samping_yang_diklik[0]);

$koordinat_semua_path[] = Array($nama_koordinat_samping_yang_diklik[1], $nama_titik_yang_diklik);

$koordinat_semua_path[] = Array($nama_titik_yang_diklik, $nama_koordinat_samping_yang_diklik[1]);

foreach ($koordinat_semua_path as $path => $titik_path) {

$x_asal = $nilai_koordinat_semua_titik[$titik_path[0]][0]; $y_asal = $nilai_koordinat_semua_titik[$titik_path[0]][1]; $x_tujuan = $nilai_koordinat_semua_titik[$titik_path[1]][0]; $y_tujuan = $nilai_koordinat_semua_titik[$titik_path[1]][1];

$jarak_path[] = round(sqrt(pow(($x_asal - $x_tujuan), 2) + pow(($y_asal - $y_tujuan), 2)));

}

foreach ($nilai_koordinat_semua_titik as $key => $value) { $key_nilai_koordinat_semua_titik [] = $key;

}

//bentuk matrix

for ($i = 0; $i < count($nilai_koordinat_semua_titik); $i++) { for ($j = 0; $j < count($nilai_koordinat_semua_titik); $j++) { for ($k = 0; $k < count($koordinat_semua_path); $k++) {

if ($key_nilai_koordinat_semua_titik[$i] == $koordinat_semua_path[$k][0] && $key_nilai_koordinat_semua_titik[$j] == $koordinat_semua_path[$k][1]) { $matrix_path[$i][$j] = $jarak_path[$k];

break; } else {

$matrix_path[$i][$j] = 0; }

(3)

}

//$hasil[] = $matrix_path;

$path_terpendek = Array();

$fw = new Floyd($matrix_path, $key_nilai_koordinat_semua_titik);

//mendapatkan posisi path mobil; $counter = 0;

foreach ($nilai_koordinat_semua_titik as $key => $value) {

for ($i = 0; $i < count($nilai_koordinat_mobil_sekarang); $i++) { if ($id_mobil[$i] == $key) {

$index_mobil[] = $counter; }

}

$counter++; }

//cari path tedekat dengan membandingkan semua mobil for ($i = 0; $i < count($index_mobil); $i++) {

// @$path_terpendek[] = $fw->get_path($index_mobil[$i], count($key_nilai_koordinat_semua_titik) - 1);

@$jarak[$i] = $fw->jarak_terpendek($index_mobil[$i], count($key_nilai_koordinat_semua_titik) - 1);

}

//ambil mobil yang memiliki jarak paling dekat dengan penumpang $id_mobil_terdekat = array_search(min($jarak), $jarak);

//ambil nama mobil, kemudian bandingkan di semua path agar mobil yang terdekat diketahui titiknya

$nama_mobil = $id_mobil[$id_mobil_terdekat];

$i = 0;

foreach ($nilai_koordinat_semua_titik as $key => $value) { if ($key == $nama_mobil) {

$id_lokasi_mobil_terdekat = $i; break;

} $i++; }

//setelah mobil yang terdekat diperoleh, temukan ambil path yang dilalui oleh mobil paling dekat

@$path_terpendek = $fw->get_path($id_lokasi_mobil_terdekat, count($key_nilai_koordinat_semua_titik) - 1);

(4)

// buat path dengan ketentuan jalur terpendek foreach ($path_terpendek as $i) {

if ($status_posisi == 0) { $ambil_koordinat = "M" .

$nilai_koordinat_semua_titik[$key_nilai_koordinat_semua_titik[$i]][0] . " " . $nilai_koordinat_semua_titik[$key_nilai_koordinat_semua_titik[$i]][1]; $status_posisi++;

} else {

$ambil_koordinat = "L" .

$nilai_koordinat_semua_titik[$key_nilai_koordinat_semua_titik[$i]][0] . " " . $nilai_koordinat_semua_titik[$key_nilai_koordinat_semua_titik[$i]][1]; }

@$path_akhir = $path_akhir . $ambil_koordinat;

$nama_titik_yang_dilalui_terpendek[] = $key_nilai_koordinat_semua_titik[$i]; }

$hasil[] = $id_mobil_terdekat;

$hasil[] = $jarak[$id_mobil_terdekat]; $hasil[] = $path_akhir;

$hasil[] = $nama_titik_yang_dilalui_terpendek; $hasil[] = $jarak[$id_mobil_terdekat];

$hasil[] = $matrix_path;

echo json_encode(@$hasil); ?>

2. Fw.php

<?php

define('INFINITE', pow(2, (20 * 8 - 2) - 1));

class Floyd {

var $panjang_path = array(array()); var $inisialisasi_path = array(array()); var $path;

var $jumlah_path; var $nama_titik; var $temp = array();

function Floyd($matrix_path, $nama_titik='') { $this->path = $matrix_path;

$this->jumlah_path = count($this->path);

if (!empty($nama_titik) && $this->jumlah_path == count($nama_titik)) { $this->nama_titik = $nama_titik;

(5)

$this->__floydwarshall();

// echo $this->jumlah_path . "sss"; }

function __floydwarshall() {

// Initialization

for ($i = 0; $i < $this->jumlah_path; $i++) { for ($j = 0; $j < $this->jumlah_path; $j++) { if ($i == $j) {

$this->panjang_path[$i][$j] = 0; } else if ($this->path[$i][$j] > 0) {

$this->panjang_path[$i][$j] = $this->path[$i][$j]; } else {

$this->panjang_path[$i][$j] = INFINITE; }

$this->inisialisasi_path[$i][$j] = $i; }

}

// Algorithm

for ($k = 0; $k < $this->jumlah_path; $k++) { for ($i = 0; $i < $this->jumlah_path; $i++) { for ($j = 0; $j < $this->jumlah_path; $j++) {

if (>panjang_path[$i][$j] > (>panjang_path[$i][$k] + $this->panjang_path[$k][$j])) {

>panjang_path[$i][$j] = >panjang_path[$i][$k] + $this->panjang_path[$k][$j];

$this->inisialisasi_path[$i][$j] = $this->inisialisasi_path[$k][$j]; }

} } } }

function __get_path($i, $j) { $this->temp = Array(); if ($i != $j) {

$this->__get_path($i, $this->inisialisasi_path[$i][$j]); }

array_push($this->temp, $j); }

(6)

}

function ambil_path($i, $j) {

if ($i != $j) {

$this->ambil_path($i, $this->inisialisasi_path[$i][$j]); }

if (!empty($this->nama_titik)) { print($this->nama_titik[$j]) . ' '; // $path[] = $this->nama_titik[$j]; } else {

print($j) . ' '; }

// return $path; }

function jarak_terpendek($i, $j) { return $this->panjang_path[$i][$j]; }

}

?>

3. Admin.php

<?php

include 'koneksi.php';

mysql_query("TRUNCATE TABLE lokasi_penumpang"); ?>

<!doctype html> <html>

<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>PTH</title>

<script type="text/javascript" src="js/raphael-min.js"></script> <script type="text/javascript" src="js/jquery.js"></script> <link href="css.css" rel="stylesheet" type="text/css" /> </head>

<body>

<header id="header">

JALUR TERPENDEK DENGAN ALGORITMA FLOYD </header>

<?php include 'include/nav.php'; ?>

(7)

<div id="canvas" style="float: left; background-image:url(img/peta.jpg); background-repeat:no-repeat;"></div>

<div id="canvas" style="float: right; width:19%;height:500px; border:1px solid black; overflow: scroll">

<label style="text-align: center; color: blue;"><h3>Keterangan</h3></label>

<label id="keterangan"></label> </div>

<?php

/* untuk mengambil semua data yang ada pada database yang akan diparsing ke javascript */

$q_titik = mysql_query("SELECT

(SELECT x FROM titik WHERE nama_titik=path.asal)as nilai_asal_x, (SELECT y FROM titik WHERE nama_titik=path.asal)as nilai_asal_y, (SELECT x FROM titik WHERE nama_titik=path.tujuan)as nilai_tujuan_x, (SELECT y FROM titik WHERE nama_titik=path.tujuan)as nilai_tujuan_y, id,

asal, tujuan

FROM path ORDER BY id ASC") or die(mysql_error());

while ($row = mysql_fetch_array($q_titik)) {

@$path[] = "M" . $row['nilai_asal_x'] . " " . $row['nilai_asal_y'] . "L" . $row['nilai_tujuan_x'] . " " . $row['nilai_tujuan_y'];

// @$path[] = "M" . $row['nilai_tujuan_x'] . " " . $row['nilai_tujuan_y'] . "L" . $row['nilai_asal_x'] . " " . $row['nilai_asal_y'];

//untuk mengetahui path yang @$id_path[] = $row['id'];

@$nama_path_asal[] = $row['asal']; @$nama_path_tujuan[] = $row['tujuan'];

@$nilai_asal_x[] = $row['nilai_asal_x']; @$nilai_asal_y[] = $row['nilai_asal_y']; @$nilai_tujuan_x[] = $row['nilai_tujuan_x']; @$nilai_tujuan_y[] = $row['nilai_tujuan_y'];

@$koordinat_semua_path[] = Array($row['asal'], $row['tujuan']); }

$q_titik_macet = mysql_query("SELECT

(SELECT x FROM titik WHERE nama_titik=path_macet.asal)as nilai_asal_x_macet,

(SELECT y FROM titik WHERE nama_titik=path_macet.asal)as nilai_asal_y_macet,

(8)

(SELECT y FROM titik WHERE nama_titik=path_macet.tujuan)as nilai_tujuan_y_macet,

id, asal, tujuan

FROM path_macet ORDER BY id ASC") or die(mysql_error());

while ($row_macet = mysql_fetch_array($q_titik_macet)) {

@$path_macet[] = "M" . $row_macet['nilai_asal_x_macet'] . " " .

$row_macet['nilai_asal_y_macet'] . "L" . $row_macet['nilai_tujuan_x_macet'] . " " . $row_macet['nilai_tujuan_y_macet'];

// @$path[] = "M" . $row['nilai_tujuan_x'] . " " . $row['nilai_tujuan_y'] . "L" . $row['nilai_asal_x'] . " " . $row['nilai_asal_y'];

//untuk mengetahui path yang

@$id_path_macet[] = $row_macet['id'];

@$nama_path_asal_macet[] = $row_macet['asal']; @$nama_path_tujuan_macet[] = $row_macet['tujuan'];

@$nilai_asal_x_macet[] = $row_macet['nilai_asal_x_macet']; @$nilai_asal_y_macet[] = $row_macet['nilai_asal_y_macet']; @$nilai_tujuan_x_macet[] = $row_macet['nilai_tujuan_x_macet']; @$nilai_tujuan_y_macet[] = $row_macet['nilai_tujuan_y_macet'];

@$koordinat_semua_path_macet[] = Array($row_macet['asal'], $row_macet['tujuan']);

}

// print_r($koordinat_semua_path); // print_r($nama_path_asal); //print_r($nama_path_asal);

//untuk mengambil titik aja agar bisa diambil group berdasarkan nama titik $q_nama_path_asal = mysql_query("SELECT * FROM titik ORDER BY id ASC") or die(mysql_error());

while ($row = mysql_fetch_array($q_nama_path_asal)) { $nama_titik_asal[] = $row['nama_titik'];

$nilai_koordinat_semua_titik[$row['nama_titik']] = Array($row['x'], $row['y']);

}

// print_r($koordinat_xy); // print_r($nama_titik_asal);

//group dari masing-masing titik, pada posisi ini semua simpang diambil nilainya pada masing-masing titik

for ($i = 0; $i <= count($nilai_koordinat_semua_titik); $i++) {

(9)

// @${"cabang_titik_$nama_titik_asal[$i]"}[] = $row['id']; //membuat variable dinamis, agar bisa diparsing ke javascript @$cabang_titik[$nama_titik_asal[$i]][] = $row['id'];

} } ?>

<script type="text/javascript"> var mobil = new Array();

var teks_no_mobil =new Array(); var path_mobil= new Array();

//parsing semua nilai yang sudah dimasukkan ke array di php var path_semua = <?php echo json_encode($path); ?>;

var nilai_asal_x= <?php echo json_encode($nilai_asal_x); ?>; var nilai_asal_y= <?php echo json_encode($nilai_asal_y); ?>; var nilai_tujuan_x= <?php echo json_encode($nilai_tujuan_x); ?>; var nilai_tujuan_y= <?php echo json_encode($nilai_tujuan_y); ?>; var nilai_koordinat_semua_titik= <?php echo

json_encode($nilai_koordinat_semua_titik); ?>; var koordinat_semua_path= <?php echo json_encode($koordinat_semua_path); ?>;

var path_semua_macet = <?php echo json_encode($path_macet); ?>;

var nilai_asal_x_macet= <?php echo json_encode($nilai_asal_x_macet); ?>; var nilai_asal_y_macet= <?php echo json_encode($nilai_asal_y_macet); ?>; var nilai_tujuan_x_macet= <?php echo

json_encode($nilai_tujuan_x_macet); ?>;

var nilai_tujuan_y_macet= <?php echo json_encode($nilai_tujuan_y_macet); ?>;

var nilai_koordinat_semua_titik_macet= nilai_koordinat_semua_titik; var koordinat_semua_path_macet= <?php echo

json_encode($koordinat_semua_path_macet); ?>;

var id_path_semua = <?php echo json_encode($id_path); ?>;

var nama_path_asal_semua = <?php echo json_encode($nama_path_asal); ?>;

var nama_path_tujuan_semua = <?php echo json_encode($nama_path_tujuan); ?>;

// var nama_titik_asal_semua = <?php echo json_encode($nama_titik_asal); ?>;

var cabang_titik_semua=<?php echo json_encode($cabang_titik) ?>; // console.log(cabang_titik_semua);

var canvas = Raphael("canvas", 1200, 600);

// canvas.canvas.style.backgroundColor = 'LIGHTBLUE'; var jumlah_taksi = 3;

var path_penumpang = new Array();

(10)

var counter_penumpang = 0; var panjang_path = new Array();

var attr_path_mobil={"stroke": "#000", "stroke-width": "10", opacity:.1}; var attr_path_mobil_macet={"stroke": "RED", "stroke-width":

"10",opacity:.2};

var attr_path_mobil_transparan={"stroke-width": "0", opacity:.1}; var attr_path_mobil_terpendek={"stroke": "RED", "stroke-width": "4"}; var attr_teks_no_mobil = {fill: '#ff0000',"font-size": 16};

var attr_warna_mobil = {fill: 'YELLOW'};

var attr_circle_penumpang = {fill: 'GREEN',opacity:.5};

var attr_teks_panjang_path ={"stroke": "BLUE","font-size": 12}; var attr_teks_penumpang ={"stroke": "BLUE","font-size": 12}; var attr_titik={"stroke": "RED","font-size": 14};

var nilai_koordinat_mobil_sekarang = new Array(); var asal_mobil_sekarang_kirim_php = new Array(); var tujuan_mobil_sekarang_kirim_php = new Array(); var nama_koordinat_samping_mobil = new Array(); var circle_penumpang = new Array();

var status_jemput_penumpang = new Array(); var path_jemput_penumpang = new Array(); var mobil_jemput_penumpang= new Array(); var random_index_asal;

var mobil_yang_sedang_menjemput_penumpang = new Array(); var counter_penumpang = 0;

var keterangan="";

var path_circle_penumpang = new Array();

var jarak_header = 80;

window.onload = function() { //jumlah mobil

for(var i=0; i<jumlah_taksi; i++){

mobil_jemput_penumpang[i] = -1;

mobil_yang_sedang_menjemput_penumpang[i] = -1; //random index path

random_index_asal= Math.floor(Math.random()*path_semua.length);

console.log(random_index_asal);

mobil[i] = canvas.circle(100, 200, 15).attr(attr_warna_mobil); teks_no_mobil[i] = canvas.text(100,

200,"M"+i).attr(attr_teks_no_mobil); path_mobil[i] =

canvas.path(path_semua[random_index_asal]).attr(attr_path_mobil_transparan); id_path_yang_sedang_digunakan[i] =

id_path_semua[random_index_asal];

(11)

counter[i] = 0; }

//

//path sebagain inisialisasi asal, karena variable path yang digunakan untuk animasi

//setelah masuk method animasi maka isi path akan berubah2 // for(var i=0; i<jumlah_taksi; i++){

// }

//hanya menampilkan garis saja agar tidak kelihatan kosong saat mobil berjalan

//garis yang ditampilkan dijadikan path penumpang for(var i=0; i<path_semua.length;i++){

path_penumpang[i] =

canvas.path(path_semua[i]).attr(attr_path_mobil); //buat id masing-masing path

path_penumpang[i].data("id",id_path_semua[i]); // hitung_panjang_path();

var x_tengah = (eval(nilai_asal_x[i]) + eval(nilai_tujuan_x[i]))/eval(2); var y_tengah = (eval(nilai_asal_y[i]) + eval(nilai_tujuan_y[i]))/eval(2); panjang_path[i] = Math.sqrt(Math.pow((nilai_asal_x[i] -

nilai_tujuan_x[i]), 2) + Math.pow((nilai_asal_y[i]- nilai_tujuan_y[i]), 2)); canvas.text(x_tengah, y_tengah,

panjang_path[i].toFixed(0)).attr(attr_teks_panjang_path);

//tampilkan text pada masing-masing titik canvas.text(nilai_asal_x[i],

nilai_asal_y[i],nama_path_asal_semua[i]).attr(attr_titik);

}

for(var i=0; i<path_semua_macet.length;i++){ console.log("macet : " +path_semua_macet[i]); path_penumpang_macet[i] =

canvas.path(path_semua_macet[i]).attr(attr_path_mobil_macet); }

for(var i=0;i<path_penumpang.length; i++){ path_penumpang[i].click(function(event) {

//untuk mendapatkan id path yang diklik, kemudian ambil ujung dari path yang diklik,

//ini berfungsi untuk menambah titik yang diklik pada floyd var id_path_yang_diklik = this.data("id");

var index_yang_diklik;

(12)

index_yang_diklik = j; break;

} }

var nama_koordinat_samping_yang_diklik =

[nama_path_asal_semua[index_yang_diklik],nama_path_tujuan_semua[index_yang_d iklik]];

//alert(titik_samping_yang_diklik);

var nilai_koordinat_path_yang_di_klik = [event.x, event.y-jarak_header];

// console.log("Tujuan mobil sekarang: "+ koordinat_path_yang_di_klik);

// console.log("koordinat semua titik: "+ koordinat_semua_titik);

//mendapatkan tujuan semua mobil agar bisa dikirim ke floyd var daftar_tujuan_mobil = tujuan_mobil_sekarang();

var nilai_koordinat_mobil_sekarang_yang_tidak_menjemput = new Array();;

var counter_mobil_yang_menjemput =0;

for(var j=0;j<nilai_koordinat_mobil_sekarang.length; j++){ if(mobil_yang_sedang_menjemput_penumpang[j] == -1){ nilai_koordinat_mobil_sekarang_yang_tidak_menjemput[j] = nilai_koordinat_mobil_sekarang[j];

}else{ } }

$.ajax({

type: 'POST', cache: false ,

url: 'floyd/fw_jemput_penumpang.php', data: {

nilai_koordinat_semua_titik:JSON.stringify(nilai_koordinat_semua_titik),

koordinat_semua_path:JSON.stringify(koordinat_semua_path),

nilai_koordinat_path_yang_di_klik:JSON.stringify(nilai_koordinat_path_yang_di_kli k),

nama_koordinat_samping_yang_diklik:JSON.stringify(nama_koordinat_samping_yan g_diklik),

(13)

nama_koordinat_samping_mobil:JSON.stringify(nama_koordinat_samping_mobil) },

success: function(hasil) {

console.log(hasil);

var nilai_balik = jQuery.parseJSON(hasil); // path_menjemput_penumpang = canvas.path(nilai_balik[2]).attr(attr_path_mobil_terpendek);

// path_mobil[nilai_balik[0]] = canvas.path(path_menjemput_penumpang);

status_jemput_penumpang[nilai_balik[0]] = 0;

mobil_jemput_penumpang[nilai_balik[0]] = nilai_balik[0]; var random_warna=((1<<24)*Math.random()|0).toString(16); attr_path_mobil_terpendek ={"stroke":

"#"+random_warna,"stroke-width": "4"};

var attr_random_warna_penumpang ={"stroke":

"#"+random_warna,"stroke-width": "4", fill:"'#"+random_warna+"'", opacity:0.4};

path_jemput_penumpang[nilai_balik[0]] = canvas.path(nilai_balik[2]).attr(attr_path_mobil_terpendek); //lingkaran penumpang

circle_penumpang[nilai_balik[0]]=canvas.circle(event.x, event.y-jarak_header, 50).attr(attr_random_warna_penumpang);

//tampilkan nama penumpang

counter_penumpang++;

path_circle_penumpang[nilai_balik[0]] = canvas.text(event.x,

event.y-jarak_header,"Penumpang "+counter_penumpang).attr(attr_teks_penumpang);

mobil_yang_sedang_menjemput_penumpang[nilai_balik[0]] = 1;

keterangan = "<br/>Mobil : M"+nilai_balik[0] + "<br/> Jarak :" +nilai_balik[4]

+ "<br/>Penumpang :" +"Penumpang "+counter_penumpang + "<br/><br/>"+keterangan;

document.getElementById("keterangan").innerHTML = keterangan;

var nilai_koordinat_asal_untuk_mengantar = nilai_koordinat_path_yang_di_klik;

console.log("Koordinat Penumpang : " + nilai_koordinat_asal_untuk_mengantar);

$.ajax({

type: 'POST', cache: false ,

(14)

operasi:JSON.stringify("insert"),

nama_mobil:JSON.stringify("M "+nilai_balik[0]), nama_penumpang:JSON.stringify("Penumpang " + counter_penumpang),

koordinat:JSON.stringify(nilai_koordinat_path_yang_di_klik),

nama_titik_samping_koordinat:JSON.stringify(nama_koordinat_samping_yang_dikli k)

},

success: function(hasil) { //alert(hasil);

} }); }

}); });

}

window.setInterval("method_mobil()", 30); //method_animasi();

};

function hitung_panjang_path(){

for(var i=0; i<path_semua.length;i++){

var x_tengah = (eval(nilai_asal_x[i]) + eval(nilai_tujuan_x[i]))/eval(2); var y_tengah = (eval(nilai_asal_y[i]) + eval(nilai_tujuan_y[i]))/eval(2);

panjang_path[i] = Math.sqrt(Math.pow((nilai_asal_x[i] -

nilai_tujuan_x[i]), 2) + Math.pow((nilai_asal_y[i]- nilai_tujuan_y[i]), 2)); canvas.text(x_tengah, y_tengah,

panjang_path[i].toFixed(0)).attr(attr_teks_panjang_path); }

}

var nilai = new Array();

function tujuan_mobil_sekarang(){ return asal_sekarang;

}

var posisi = new Array();

function method_mobil(){

for(var i = 0; i<mobil.length; i++){ posisi[i] = method_animasi(i);

mobil[i].attr({cx: posisi[i].x, cy: posisi[i].y});

//agar teks ikut bergerak

(15)

nilai_koordinat_mobil_sekarang[i] = [Math.round(posisi[i].x),Math.round(posisi[i].y)]

// nilai_koordinat_mobil_sekarang_x[i] = Math.round(posisi[i].x);

// nilai_koordinat_mobil_sekarang_y[i] = Math.round(posisi[i].y); }

}

var counter = new Array();

var id_path_yang_sedang_digunakan = new Array(); var asal_sekarang = new Array();

var kategori_titik = new Array(); var pos = new Array();

var hasil_random = new Array(); var id = new Array();

function method_animasi(index_mobil){

for(var i=0;i<status_jemput_penumpang.length;i++){ if(status_jemput_penumpang[i] == 0 && index_mobil == mobil_jemput_penumpang[i]){

path_mobil[index_mobil] = path_jemput_penumpang[i]; counter[index_mobil] =0;

status_jemput_penumpang[i]++; }

}

for(var i=0;i<mobil_jemput_penumpang.length;i++){ //jika sudah sampai pada penumpang

if(counter[index_mobil] >= path_mobil[index_mobil].getTotalLength() && index_mobil == mobil_jemput_penumpang[i]){

counter[index_mobil] = 0;

mobil_jemput_penumpang[i] = -1;

mobil_yang_sedang_menjemput_penumpang[i] = -1; path_mobil[index_mobil] = canvas.path(path_semua[0]);

id_path_yang_sedang_digunakan[index_mobil] = id_path_semua[0]; asal_sekarang[index_mobil] = nama_path_tujuan_semua[0];

path_jemput_penumpang[i].remove(); circle_penumpang[i].remove(); path_circle_penumpang[i].remove(); // alert("sampai");

} }

if(counter[index_mobil] >= path_mobil[index_mobil].getTotalLength() && index_mobil != mobil_jemput_penumpang){

for(var asal in cabang_titik_semua){ if(asal == asal_sekarang[index_mobil]){

(16)

} }

//console.log("Hasil asal:"+kategori_titik);

for(var i=0; i<=path_semua.length;i++){

if(id_path_yang_sedang_digunakan[index_mobil] ==id_path_semua[i]){

hasil_random[index_mobil] =

kategori_titik[index_mobil][Math.floor(Math.random()*kategori_titik[index_mobil].l ength)];

id[index_mobil]=0;

//dapatkan nilai dan ambil indeksnya di array for(var i=0;i<id_path_semua.length;i++){

if(id_path_semua[i] == hasil_random[index_mobil]){ id[index_mobil]=i;

break; }

}

asal_mobil_sekarang_kirim_php[index_mobil] = asal_sekarang[index_mobil];

path_mobil[index_mobil] =

canvas.path(path_semua[id[index_mobil]]).attr(attr_path_mobil_transparan); id_path_yang_sedang_digunakan[index_mobil] =

id_path_semua[id[index_mobil]]; asal_sekarang[index_mobil] = nama_path_tujuan_semua[id[index_mobil]];

tujuan_mobil_sekarang_kirim_php[index_mobil] = asal_sekarang[index_mobil];

nama_koordinat_samping_mobil[index_mobil] = [asal_mobil_sekarang_kirim_php[index_mobil],

tujuan_mobil_sekarang_kirim_php[index_mobil]]; counter[index_mobil]=0; }

} }

//ambil x dan y pada posisi counter counter[index_mobil]++;

pos[index_mobil] =

path_mobil[index_mobil].getPointAtLength(counter[index_mobil]); return pos[index_mobil];

};

</script> </div> </body> </html>

Referensi

Dokumen terkait

Pengasawan terhadap tenaga penjual dapat dilihat dari performa penjualan yang dilakukan yang dapat diukur berdasarkan outcome (hasil penjualan) dan behavior

Diluar sidang Pengadilan, penyelesaian sengketa dapat dilaksanakan baik oleh mereka sendiri (yang melakukan perdamaian) tanpa melibatkan pihak lain, atau meminta

Menurut McGregor seorang wirausahawan ataupun manajer sebaiknya menerapkan Teori Y, maka orang – orang di dalam perusahaan akan didorong untuk berkembang, menerapkan

Dalam upaya melembagakan pendeka- tan partisipatif dalam pengembangan sistem usaha pertanian yang berkerakyatan, berke- lanjutan, dan terdesentralisasi namun berdaya saing

Beberapa penyempurnaan yang perlu dilakukan untuk kelembagaan P3A dan Ga- bungan P3A adalah : (1) Mengkonsolidasikan kelembagaan lokal yang beragam dalam satu wadah Koperasi,

Pelayanan Kesehatan Ibu dan Anak merupakan salah satu tujuan Pembangunan Milanium atau Millanium Devalopment Goals (MDGs), dengan sasaran program pembangunan kesehatan

Fokus penelitian ini merupakan implementasi syarat pencatatan nikah, prosedur nikah, dan syarat administratif nikah pada pernikahan usia muda dengan informan pelaku

Hasil penelitian menunjukkan bahwa metode pembelajaran Self Directed Learning dan diskusi kelompok kecil merupakan metode yang dapat meningkatkan keaktifan mahasiswa dan