Jumat, 27 September 2013

Ilmu Kedokteran Forensik


Forensik adalah bidang ilmu pengetahuan yang digunakan untuk membantu proses penegakan keadilan melalui proses penerapan ilmu atau sains. Dalam kelompok ilmu-ilmu forensik ini dikenal antara lain ilmu fisika forensik, ilmu kimia forensik, ilmu psikologi forensik, ilmu kedokteran forensik, ilmu toksikologi forensik, ilmu psikiatri forensik, komputer forensik, dan sebagainya.

1.            Penjelasan Ilmu Kedokteran Forensik
Ilmu kedokteran Forensik merupakan salah satu disiplin ilmu yang menerapkan ilmu kedokteran klinis sebagai upaya penengakan hukum dan keadilan. Dengan semakin banyaknya kasus kriminal khususnya pembunuhan, forensik kedokteran berfungsi sebagai prosedur medik untuk menentukan penyebab, lama kematian, atau mengevaluasi proses penyakit, dan trauma yang terjadi terhadap korban. Untuk melakukan forensik kita perlu melakukan identifikasi karena dalam ilmu kedokteran Forensik identifikasi merupakan hal yang penting, Identifikasi merupakan cara untuk mengenali seseorang melalui karakteristik atau ciri – ciri khusus yang dimiliki orang tersebut.

2.            Tujuan Ilmu Kedokteran Forensik
Di negara yang berlandaskan hukum, maka sudah selayaknya jika hukum di jadikan supremasi, dimana setiap orang di harapkan tunduk dan patuh terhadap hukum tersebut. Hal ini terjadi bila tersedia perangkat hukum yang mengatur seluruh sektor kehidupan, diantaranya adalah sektor kesejahteraan rakyat. Salah satu dari bagian sektor kesejahteraan yaitu kesehatan, maka di sini di perlukan perangkat hukum kesehatan guna mewujudkan masyarakat yang sejahtera. Dalam upaya mewujudkan masyarakat sejahtera khususnya melalui hukum kesehatan, dokter merupakan salah satu faktor penting yang harus di soroti bersama. Karena dalam praktik kedokteran kesalahan dokter dalam menjalankan tugas dapat mengakibatkan sesuatu yang fatal.
Peranan dari kedokteran forensik dalam penyelesaian perkara pidana di Pengadilan adalah membantu hakim dalam menemukan dan membuktikan unsur-unsur yang di dakwakan dalam pasal yang diajukan oleh penuntut. Serta memberikan gambaran bagi hakim mengenai hubungan kausalitas antara korban dan pelaku kejahatan dengan mengetahui laporan dalam visum et repertum. Disamping itu, diperoleh hasil bahwa dalam setiap praktek persidangan yang memerlukan keterangan dari kedokteran forensik, tidak pernah menghadirkan ahli dalam bidang ini untuk diajukan di sidang pengadilan sebagai alat bukti saksi. Implikasi teoritis persoalan ini adalah bahwa hakim dalam menjatuhkan putusan suatu perkara yang memerlukan keterangan dokter forensik, hanya memerlukan keterangan yang berupa visum et repertum tanpa perlu menghadirkan dokter yang bersangkutan di sidang pengadilan. Sedangkan implikasi praktisnya bahwa hal ini dapat dijadikan pertimbangan bagi hakim dalam menangani perkara yang memerlukan peran dari kedokteran forensik.

3.            Penerapan Ilmu Kedokteran Forensik
Salah satu cara identifikasinya adalah dengan cara antropometri yaitu, pengukuran bagian tubuh dalam usaha melakukan identifikasi. Bertillons memakai cara pengukuran berdasarkan pencatatan warna rambut, mata, warna kulit, bentuk hidung, telinga, dagu, tanda pada badan, tinggi badan, panjang dan lebar kepala, sidik jari, dan DNA.

4.            Contoh Penerapan Ilmu Kedokteran Forensik
Pemindai sidik jari adalah sebuah perangkat elektronik yang digunakan untuk menangkap gambar digital dari pola sidik jari. Gambar tersebut disebut pemindaian hidup. Pemindaian hidup adalah pemrosesan digital untuk membuat sebuah template biometrik yang disimpan dan digunakan untuk pencocokan. Ini merupakan ikhtisar dari beberapa sidik jari yang lebih umum digunakan sensor teknologi.
Sebuah sistem pemindai sidik jari memiliki dua pekerjaan, yakni mengambil gambar sidik jari, dan memutuskan apakah pola alur sidik jari dari gambar yang diambil sama dengan pola alur sidik jari yang ada di database. Ada beberapa cara untuk mengambil gambar sidik jari seseorang, namun salah satu metode yang paling banyak digunakan saat ini adalah optical scanning.
Inti dari pemindai optik adalah charge coupled device (CCD, Peranti tergandeng–muatan), sistem sensor cahaya yang sama digunakan pada kamera digital dan camcorder. CCD merupakan sebuah larik sederhana dari diode peka cahaya yang disebut photosite, yang menghasilkan sinyal elektrik yang merespon foton cahaya. Setiap photosite merekam sebuah piksel, titik kecil yang merepresentasikan cahaya dan membenturnya. Pixel-piksel ini membentuk pola terang dan gelap dari sebuah gambar hasil scan sidik jari seseorang.
Proses Pemindai sidik jari
Berikut ini beberapa sistem pembacaan yang kita temukan di beberapa sistem sensor sidik jari elektronik, baik sensor online maupun stand alone.
1. Optical (Optis) Teknik pembacaan dengan optical atau optis mempunyai sistem merekam pola sidik jari dengan menggunakan blitz(cahaya). Alat pembaca sidik jari atau fingerprint scanner yang digunakan adalah berupa digital cammera (kamera digital). Untuk lapisan paling atas area untuk meletakkan ujung jari atau permukaan sentuh (scan area). Di bawah scan area, terdapat lampu blitz atau pemancar cahaya yang difungsikan untuk menerangi permukaan ujung jari. Karena sidik jari terkena cahaya maka akan menghasilkan pantulan dari ujung jari yang selanjutnya ditangkap oleh alat penerima. Data tersebut selanjutnya disimpan ke dalam memori. Sistem ini banyak digunakan di berbagai perusahaan penyedia pemindai sidik jari seperti Fingerspot.
2. Ultrasonik Ultrasonik adalah suara atau getaran dengan frekuensi yang sangat tinggi dan tidak bisa didengar oleh telinga manusia, yaitu kira-kira di atas 20 kilo Hertz. Gelombang ultrasonik dapat merambat dalam medium padat, cair dan gas.
Tehnik ini hampir sama dengan tehnik yang digunakan dalam dunia kedokteran seperti alat pendeteksi penyakit atau USG. Dalam tehnik ini, digunakan suara berfrekuensi sangat tinggi untuk menembus lapisan epidermal kulit. Suara frekuensi tinggi tersebut dibuat dengan menggunakan transduser piezoelektrik. Pantulan frekuensi tersebut diterima menggunakan alat yang sejenis. Selanjutnya pola pantulan ini dipergunakan untuk menyusun citra sidik jari.
Dengan Pembacaan ultrasonik, tangan yang kotor tidak menjadi masalah. Demikian juga dengan permukaan scanner yang kotor tidak akan menghambat proses pembacaan.
3. Capacitive (Kapasitans) Tehnik Kapasitans menggunakan cara pengukuran kapasitant untuk membentuk citra sidik jari. Scan area dan kulit ujung jari yang bersentuhan sebagai kapasitor dari sistem ini. Karena tekstur sidik jari mempunyai ridge (gundukan) dan valley (lembah) pada maka kapasitas dari kapasitor masing-masing orang akan berbeda.
4. Thermal (Suhu) Tehnik Thermal sistem pembacaan dengan menggunakan perbedaan suhu antara ridge (gundukan) dengan valley (lembah) tekstur sidik jari untuk mengetahui pola sidik jari. Cara yang dilakukan adalah dengan menggeser ujung jari (swap) diatas lapisan scan area. Apabila ujung jari hanya diletakkan saja, dalam waktu singkat, suhunya akan sama karena adanya proses keseimbangan.

Sumber:

Anggota kelompok:
Alfinza Raendina S.
Hutomo Prima Dewanto
IN Putera Astawan                                    
Widyanto Ardy P.                                      
Yudhi Prasongko                                        

50410549
53410339
53410486
58410499
58410729






Senin, 17 Juni 2013

Pengantar Teknologi Game

Initial State
             Game ini terdiri dari dua buah garis sebagai bet dalam permainan bola pingpong  dan user sebagai player satu akan melawan computer.permainan ini bisa dimainkan oleh dua orang dengan cara salah satu pemain yang bertindak sebagai computer mengganti player menjadi manusia.pemain mencetak angka jika bola yang di lepas oleh musuh tidak dapat di tangkap oleh bet pingpong maka akan score akan bertambah 1 atau sebaliknya

                                                              Tampilan awal game


 ATURAN PERMAINAN

1.             Pemain melepaskan bola dengan cara menekan L kearah daerah lawan
2.             Jika bola tidak tertangkap oleh bet lawan maka score akan bertambah satu poin



KEY BINDINGS

 w               :    player 1 atas
  s               :    player 1 bawah
  l                :    player 1 lepas bola
 
  up             :    player 2 atas
  down       :    player 2 bawah
  left           :   player 2 lepas bola
 
  p               :    ganti player 2 : computer / human
  r                :    reset game
  +               :    computer level ++
  -                :    computer level --




LISTING PROGRAM


PFont scoreFont;
Ground ground;
Player player1;
Player player2;
Ball ball;
Message message;
boolean start = true;

void setup() {
  size(600, 450);
  ground = new Ground();
  player1 = new Player(1, 20, height/2, false);
  player2 = new Player(2, width - 20, height/2, true);
  ball = new Ball(0,0);
  ball.setPos(player1.posX + player1.size/9 + ball.size/2, player1.posY);
  message = new Message();
  scoreFont = createFont("Andalus", 40);
  textFont(scoreFont);
  ellipseMode(CENTER);
  frameRate(150);
}

void draw() {
  background(255,0,0);
  stroke(255); fill(255);
  ground.draw();
  player1.draw();
  player2.draw();
  ball.draw();
  message.draw();
  if (start) {
    player1.movY = 4;
    ball.stickRelease(1);
    start = false;
  }
}

void keyPressed() {
  if (key == 'r' || key == 'R') {
    resetGame();
  }
  if (key == 'p' || key == 'P') {
    player2.switchComputerDriven();
  }
  if (key == 'w' || key == 'W') {
    player1.up();
  }
  if (key == 's' || key == 'S') {
    player1.down();
  } 
  if (key == 'l' || key == 'L') {
    player1.releaseBall();
  }
  if (key == '+') {
    player2.setDifficulty(1);
    message.set("computer level " + (int)player2.getDifficulty());
  }
  if (key == '-') {
    player2.setDifficulty(-1);
    message.set("computer level " + (int)player2.getDifficulty());
  }
  if (key == CODED) {
    if (keyCode == UP) {
      player2.up();
    }
    if (keyCode == DOWN) {
      player2.down();
    }
    if (keyCode == LEFT) {
      player2.releaseBall();
    }
  }
}

void resetGame() {
  player1.setPos(20, height/2);
  player2.setPos(width - 20, height/2);
  player1.resetScore();
  player2.resetScore();
  ball.setSticky(1);
  player1.movY = 4;
  ball.stickRelease(1);
  message.set("new game");
}

class Ground {
 
  int scoreP1, scoreP2;
 
  Ground() {
    scoreP1 = 0;
    scoreP2 = 0;
  }
 
  void draw() {
    line(width/2, 0, width/2, height);
    text(player1.getScore(), width/3, 50);
    text(player2.getScore(), width/1.6, 50);
  }
}

class Message {
  String say;
  int time;
  int maxTime = 0;
 
  Message() {
    say = "";
    time = 0;
  }
 
  void set(String _say) {
    time = maxTime;
    say = _say;
  }
 
  void draw() {
    if ((say != "") && (time > 0)) {
      float a = 255 - ((maxTime - time) * 5);
      stroke(255,255,255,a); fill(255,255,255,a);
      text(say, width/2 - (say.length() * 18)/2, height/2);
      time--;
    } else {
      say = "";
    }
    stroke(255,255,255,255); fill(255,255,255,255);
  }
}

class Player {
  float posX, posY, movX, movY;
  int id, size, thickness, score;
  boolean computerDriven;
  int difficulty, pause, pauseTime, movPause, dir;
 
  Player(int _id, float _posX, float _posY, boolean _computerDriven) {
    id = _id;
    posX = _posX;
    posY = _posY;
    computerDriven = _computerDriven;
    size = 80;
    thickness = 5;
    score = 0;
    difficulty = 2;
    pause = 75;
    pauseTime = pause;
    movPause = 0;
    dir = 0;
  }
 
  void draw() {
    update();
    rect(posX - (size/16), posY - (size/2), thickness, size);
  }
 
  void up() {
    if (!computerDriven) movY = constrain (movY -= 12, -10, 10);
  }
 
  void down() {
    if (!computerDriven) movY = constrain (movY += 12, -10, 10);
  }
 
  void update() {
    if (computerDriven) {
      if (ball.sticky && (ball.stickOn == 2)) pausePlayer();
      else movY = constrain(ball.getPosY() - posY, -2 - difficulty, 2 + difficulty);
    }
    posY = constrain (posY+movY, 0, height);
    movY *= .7;
  }
 
  float getMovY() {
    return movY;
  }
 
  void pausePlayer() {
    if (computerDriven) {
      if (pause == pauseTime) {
        movPause = 5;
        dir = 1;
      }
      movY = constrain (movPause * dir, -5, 5);
      if ((posY < (size/2)) && (dir < 0)) dir = 1;
      else if ((posY > (height - (size/2))) && (dir > 0)) {
        println(height - (size/2));
        dir = -1;
      }
      pause--;
      if (pause < 1) {
        pause = 75;
        releaseBall();
      }
    }
  }
 
  void releaseBall() {
    ball.stickRelease(id);
  }
 
  void scorePlus() {
    score ++;
  }
 
  int getScore() {
    return score;
  }
 
  void resetScore() {
    score = 0;
  }
 
  void setDifficulty(int _d) {
    difficulty = constrain (difficulty += _d, 0, 10);
  }
 
  float getDifficulty() {
    return difficulty; 
  }
  void switchComputerDriven() {
    if (computerDriven) computerDriven = false;
    else computerDriven = true;
  }
 
  void setPos(int _posX, int _posY) {
    posX = _posX;
    posY = _posY;
  }
 
  boolean testRacketCollision(float x, float y, float s) {
    if ((y - (s / 2) > posY - (size / 2)) && (y + (s / 2) < posY + (size / 2))) {
      return true;
    } else return false;
  }
class Ball {

  float posX, posY, movX, movY, speedX, speedY, size;
  int stickOn;
  boolean sticky;
 
 
  Ball(float _posX, float _posY) {
    posX = _posX;
    posY = _posY;
    movX = 0;
    movY = 0;
    speedX = 0;
    speedY = 0;
    sticky = true;
    stickOn = 1;
    size = 6;
  }
  
  void setPos(float _posX, float _posY) {
    posX = _posX;
    posY = _posY;
  }
 
  void update() {
    if (sticky) {
      if (stickOn == 1) {
        posX = player1.posX + player1.thickness/2 + ball.size/2;
        posY = player1.posY;
      } else if (stickOn == 2) { 
        posX = player2.posX - player2.thickness/2 - ball.size/2;
        posY = player2.posY;     
      } 
    } else {
      posX = posX + movX;
      posY = posY + movY;
    }
   
   
    if (posY < size) movY = -movY;        // top bounce
    if (posY > height-size) movY = -movY; // bottom bounce
   
    if (posX < 0) { // out left side
      player2.scorePlus();
      sticky = true;
      stickOn = 1;
    }
   
    else if (posX > width) { // out right side
      player1.scorePlus();
      sticky = true;
      stickOn = 2;
    }
   
    else if (posX < (player1.posX + (player1.thickness / 2) + (size / 2))) {
      if (player1.testRacketCollision(posX, posY, size)) {
        movX = -movX;
        movY += player1.getMovY() / 5;
      }
    }

    else if (posX > player2.posX) { 
      if (player2.testRacketCollision(posX, posY, size)) {
        movX = -movX;
        movY += player2.getMovY() / 5;
      }
    }
  }
 
  void stickRelease(int idplayer) {
    sticky = false;
    if ((stickOn == 1) && (idplayer == 1)) {
      movY = player1.getMovY();
      movX = 5;
      stickOn = 0;
    } else if ((stickOn == 2) && (idplayer == 2)) {
      movY = player2.getMovY();
      movX = -5;
      stickOn = 0;
    }   
  }
 
  void setSticky(int _playerId) {
    sticky = true;
    stickOn = _playerId; 
  }
 
  float getPosY() {
    return posY;
  }
 
  void draw() {
    update();
    ellipse(posX, posY, size, size);
  }
}


LOGIKA PROGRAM

Untuk membuat game pingpong diperlukan beberapa variable seperti
1.      posX dan posy yang digunakan untuk menetukan posisi bola
2.                    movX dan movY yang digunakan untuk menggerakan bola pingpong yang            berhubungan dengan posX dab posy untuk mengerakan bola
3.                    speedX dan speedy yangdigunakan untuk mengukur kecepatan bola dengan menggunaka posisi posX dan posy dan  juga untuk mengaturkecepatannya berhubungan dengan  frame rate
4.                    sticky dan stickyon yang berguna untuk menempelkan bola jika bola sudah tida tertangkap bet pingpong lawan dan akan menepel di bet yang akan serve pertamakali
lalu juga ada beberapa method yang di buat
1.                    Void Setup yaitu method yang digunakan untuk pengaturan pertama kali permainan dijalankan seperti besar window yang digunakan  posisi bet pingpong pertama kali,letakbola,text score
2.                    Void Draw yaitu method  yang berfungsi mengatur background dalam permainan background disini mencakup posisi bola pertama kali warna background
3.                    Void keyPressed yaitu method yang mengatur configurator pemain void ini berfungsi sebagai pengatur permainan dengan  menggunkan keyboard jika keyboard di tekan sesuai key yang dimasukan maka akan menggerakan bet pinpong
4.                    Void ResetGame yaitu method yang mengatur untuk memulai permainan dari awal lagi jika user ingin memulai permainan baru hany denga menekan key R
5.                    Void set yaitu method yang berguna untuk mencetak atau  menampilkan score permainan
6.                    Void Update yaitu method yang berfungsi untuk mengupdate permainan jika bola tidak bisa ditangkap oleh lawan maka bola akan berada di user yang tidak bisa menangkap bola tadi bukan berada di pemain yang mencetak angka


Computer Driven        

                   Didalam game ini jika kita memainkan  melawan computer terdapat semacam ai yang digunakan dipermainan ini digunakan Boolean ComputerDriven. computerDriven ini berkerja dengan membaca posisi bet pingpong lawan dan  membaca  posisi bola jika bola naik maka computer driven akan mengarahkan bet pingpong nya sendiri untuk naik dan jika turun akan diarah kan turun oleh computerDriven tersebut computerDriven dapat men-serve bola juga jika player dapat mengarahkan bola untuk tidak dikena oleh bet pingpong computer selain itu computerDriven ini juga dapat diatur  tingkat kesulitannya dengan menekan key + maka tingkatnya akan semakin sulit dan bet pingpong yang dikendalikan computer dapat bergerak dengan cepat jika kita kurangi dengan menakan tombol – maka pergerakan bet akan lama dan memudahkan lawan untuk mengalahkan komputer

   

                                       Computer dapat serve dengan adanya ComputerDriven