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 =
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; }
}
//$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);
// 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;
$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); }
}
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'; ?>
<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,
(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++) {
// @${"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();
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];
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;
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),
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 ,
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
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]){
} }
//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>