Kamis, 22 September 2011

Membuat Jam Digital

Berikut ini adalah contoh program untuk menuliskan jam yang aktif di komputer client pada halaman website
<HTML>
<HEAD>
<TITLE>Jam</TITLE>
<SCRIPT Language=”JavaScript”>
<!–
var timerID = null;

function showtime(){
var today=new Date()
document.CLOCK.ALARM.value=today.toLocaleString()
TimerID=setTimeout(“showtime()”,1000)
}
// –>
</SCRIPT>
</HEAD>
<BODY TEXT=”#000000″ BGCOLOR=”#000561″ LINK=”#0000EE” VLINK=”#551A8B” ALINK=”#FF0000″ onLoad=”showtime()”>
<P><BR><CENTER>
<FORM name=”CLOCK”><INPUT name=”ALARM” TYPE=”TEXT” SIZE=20 VALUE=”"></FORM>
</CENTER>
</BODY>
</HTML>
sumber :http://www.wahyukurniawan.info

Konversi Suhu

<SCRIPT LANGUAGE=”JavaScript”>
<!–
function CF()
{
var c = document.convert.celcius.value;
document.convert.fahrenheit.value = 9*c/5 + 32;
}
function FC()
{
var f = document.convert.fahrenheit.value;
document.convert.celcius.value = (f-32)* 5/9;
}
//–>
</SCRIPT>
<FORM NAME=”convert”>
<H1>Temperature conversion</H1>
<INPUT TYPE=”TEXT” NAME=”celcius” VALUE=”0″ SIZE=4 MAXLENGTH=6
onFocus=”document.convert.fahrenheit.value=”;”
onBlur=”CF();”> Celcius
<INPUT TYPE=”BUTTON” VALUE=”>>” onClick=”CF();”>
<INPUT TYPE=”BUTTON” VALUE=”<<” onClick=”FC();”>
Fahrenheit <INPUT TYPE=”TEXT” NAME=”fahrenheit” VALUE=”" SIZE=4 MAXLENGTH=6
onFocus=”document.convert.celcius.value=”;”
onBlur=”FC();”>
</FORM>
sumber :http://www.wahyukurniawan.info

Timer di Javascript

Berikut adalah contoh script untuk timer dengan JavaScript
var month = ‘*’; // 1 through 12 or ‘*’ within the next month, ’0′ for the current month
var day = ’1′; // day of month or + day offset
var dow = 0; // day of week sun=1 sat=7 or 0 for whatever day it falls on
var hour = 14; // 0 through 23 for the hour of the day
var tz = 10; // offset in hours from UTC to your timezone
var lab = ‘cd’; // id of the entry on the page where the counter is to be inserted
function start() {displayCountdown(setCountdown(month,day,hour,tz),lab);}
loaded(lab,start);
// Countdown Javascript
// copyright 20th April 2005, 17th November 2006 by Stephen Chapman
// permission to use this Javascript on your web page is granted
// provided that all of the code in this script (including these
// comments) is used without any alteration
// you may change the start function if required
var pageLoaded = 0; window.onload = function() {pageLoaded = 1;}
function loaded(i,f) {if (document.getElementById && document.getElementById(i) != null) f(); else if (!pageLoaded) setTimeout(‘loaded(\”+i+’\',’+f+’)',100);
}
function setCountdown(month,day,hour,tz) {var m = month; if (month==’*') m = 0; var c = setC(m,day,hour,tz); if (month == ‘*’ && c < 0) c = setC(‘*’,day,hour,tz); return c;} function setC(month,day,hour,tz) {var toDate = new Date();if (day.substr(0,1) == ‘+’) {var day1 = parseInt(day.substr(1));toDate.setDate(toDate.getDate()+day1);} else{toDate.setDate(day);}if (month == ‘*’)toDate.setMonth(toDate.getMonth() + 1);else if (month > 0) { if (month <= toDate.getMonth())toDate.setFullYear(toDate.getFullYear() + 1);toDate.setMonth(month-1);}
if (dow >0) toDate.setDate(toDate.getDate()+(dow-1-toDate.getDay())%7);
toDate.setHours(hour);toDate.setMinutes(0-(tz*60));toDate.setSeconds(0);var fromDate = new Date();fromDate.setMinutes(fromDate.getMinutes() + fromDate.getTimezoneOffset());var diffDate = new Date(0);diffDate.setMilliseconds(toDate – fromDate);return Math.floor(diffDate.valueOf()/1000);}
function displayCountdown(countdn,cd) {if (countdn < 0) document.getElementById(cd).innerHTML = “Sorry, you are too late.”; else {var secs = countdn % 60; if (secs < 10) secs = ’0′+secs;var countdn1 = (countdn – secs) / 60;var mins = countdn1 % 60; if (mins < 10) mins = ’0′+mins;countdn1 = (countdn1 – mins) / 60;var hours = countdn1 % 24;var days = (countdn1 – hours) / 24;document.getElementById(cd).innerHTML = days+’ days + ‘+hours+’ : ‘+mins+’ : ‘+secs;setTimeout(‘displayCountdown(‘+(countdn-1)+’,\”+cd+’\');’,999);}}
Halaman HTMLnya sbb:
<html>
<head>
<script type=”text/javascript” src=”count.js”>
</script>
</head>
<body>
<span id=”cd”></span>
</body>
</html>
sumber :http://www.wahyukurniawan.info

Timer

Beberapa game online di internet saat ini menggunakan timer untuk perhitungan secara real time. Salah satu contohnya adalah game Mafia Wars di facebook. Berikut adalah contoh script timer yang agak mirip, kita dapat modifikasi timenya dengan mengambil nilai detik yang tersimpan dalam database, serta mengkonversinya ke dalam bentuk time dengan format %h:%m:%s. Dari waktu ke waktu kita perlu mengupdate database dengan nilai timer yang terakhir. Ketika komunikasi antara client dan server tercipta, maka kita harus menggunakan AJAX. Adapun program JavaScriptnya dibuat oleh Yahav Braverman
<html>
<head>
<title>Timer Test</title>
<script type=”text/javascript” src=”AdvancedCountDown.js”></script>
<script type=”text/javascript”>
window.onload=WindowLoad;
function WindowLoad(event) {
ActivateCountDown(“CountDownPanel”, 700000, “CountDownEnded”);
}
function CountDownEnded()
{
alert(“the time has expired!”);
}
</script>
<style type=”text/css”>
.CountDownPanel {color: blue; background-color: yellow; font-size: 18px;}
</style>
</head>
<body>
<p>
Time remaining: <span id=”CountDownPanel” time_format=”%h:%m:%s”></span>&nbsp;&nbsp;&nbsp;
</p>
</body>
</html>
/*
AdvancedCountDown.js
Written By: Yahav Braverman, 2008
ANY CHANGE IN THE CODE BELOW MIGHT CAUSE UNEXPECTED PROBLEMS.
PLEASE USE THE SAMPLE CODE THAT COME WITH THIS FILE.
*/
var _arrCountDownContainers = new Array();
var _arrCountDownSeconds = new Array();
var _arrCountDownCallbacks = new Array();
var _countDownTimer = 0;
function _cdt_CountDownTick()
{
var activeCount = 0;
for (var key in _arrCountDownSeconds)
{
var curSeconds = _arrCountDownSeconds[key];
if (curSeconds < 0)
continue;
if (curSeconds == 0)
{
_cdt_TimeOver(key);
continue;
}
_cdt_ApplyCountdownText(key);
activeCount++;
}
if (activeCount > 0)
_countDownTimer = window.setTimeout(“_cdt_CountDownTick()”, 100);
}
function _cdt_TimeOver(key)
{
_arrCountDownSeconds[key] = -1;
var strCallback = _arrCountDownCallbacks[key];
if (strCallback && strCallback.length > 0)
{
eval(strCallback + “();”);
}
}
function ActivateCountDown(strContainerID, initialValue, strCallback)
{
if (typeof initialValue == “undefined”)
{
if (_arrCountDownSeconds[strContainerID] && _arrCountDownSeconds[strContainerID] < 0)
{
_arrCountDownSeconds[strContainerID] = _arrCountDownSeconds[strContainerID] * -1;
_arrCountDownContainers[strContainerID].setAttribute(“initial_timer_value”, _arrCountDownSeconds[strContainerID] + “”);
_arrCountDownContainers[strContainerID].setAttribute(“activation_time”, _cdt_GetCurrentTime() + “”);
RestartCountdownTimer(1);
}
return;
}
var objContainer = document.getElementById(strContainerID);
if (!objContainer)
{
alert(“count down error: container does not exist: ” + strContainerID + “\nmake sure html element with this ID exists”);
return;
}
objContainer.setAttribute(“activation_time”, _cdt_GetCurrentTime() + “”);
objContainer.setAttribute(“initial_timer_value”, initialValue + “”);
_arrCountDownContainers[strContainerID] = objContainer;
_arrCountDownCallbacks[strContainerID] = strCallback;
_cdt_ApplyCountdownText(strContainerID);
RestartCountdownTimer(1000);
}
function RestartCountdownTimer(value)
{
if (_countDownTimer)
window.clearTimeout(_countDownTimer);
_countDownTimer = window.setTimeout(“_cdt_CountDownTick()”, value);
}
function DeactivateCountDown(strContainerID)
{
if (_arrCountDownSeconds[strContainerID] && _arrCountDownSeconds[strContainerID] > 0)
{
_arrCountDownSeconds[strContainerID] = _arrCountDownSeconds[strContainerID] * -1;
}
}
function DeactivateAllCountdowns()
{
for (var key in _arrCountDownSeconds)
{
DeactivateCountDown(key);
}
}
function ActivateAllCountdowns()
{
for (var key in _arrCountDownSeconds)
{
ActivateCountDown(key);
}
}
function SetInitialTime(strContainerID, initialValue)
{
var nValue = parseInt(initialValue);
if (isNaN(nValue))
{
alert(“invalid number: ” + initialValue);
return;
}
if (nValue < 0)
nValue = 0;
var objContainer = _arrCountDownContainers[strContainerID];
if (objContainer)
{
objContainer.setAttribute(“activation_time”, _cdt_GetCurrentTime() + “”);
objContainer.setAttribute(“initial_timer_value”, nValue + “”);
}
}
function GetCurrentTime(strContainerID)
{
var objContainer = _arrCountDownContainers[strContainerID];
if (objContainer)
{
return _cdt_GetRealSeconds(objContainer);
}
return 0;
}
function _cdt_ApplyCountdownText(strContainerID)
{
//get container:
var objContainer = _arrCountDownContainers[strContainerID];
//get format:
var strFormat = objContainer.getAttribute(“time_format”);
var blnCustomFormat = true;
if (!strFormat || strFormat.length == 0)
{
strFormat = “%h:%m:%s”;
blnCustomFormat = false;
}
//get real seconds
var seconds = _cdt_GetRealSeconds(objContainer);
//store:
_arrCountDownSeconds[strContainerID] = seconds;
//build text:
var strText = “”;
//time over?
var strFinishTime = objContainer.getAttribute(“finish_value”);
if (strFinishTime && strFinishTime.length > 0)
{
var nFinishTime = parseFloat(strFinishTime);
if (!isNaN(nFinishTime) && seconds < nFinishTime)
{
_cdt_TimeOver(strContainerID);
return;
}
}
//raw?
if (strFormat == “RAW”)
{
strText = parseFloat(seconds.toFixed(2));
}
else
{
//get minutes:
var minutes = parseInt(seconds / 60);
//shrink:
seconds = (seconds % 60);
//get hours:
var hours = parseInt(minutes / 60);
//shrink:
minutes = (minutes % 60);
//get days:
var days = parseInt(hours / 24);
//shrink:
//use this if we want to show the days
//hours = (hours % 24);
//need to add zero?
/*
if (!blnCustomFormat)
{
hours = AddZero(hours);
minutes = AddZero(minutes);
seconds = AddZero(seconds);
}
*/
hours = AddZero(hours);
minutes = AddZero(minutes);
seconds = AddZero(seconds);
//strText = strFormat.replace(“%d”, days + “”).replace(“%h”, hours + “”).replace(“%m”, minutes + “”).replace(“%s”, seconds + “”);
strText = strFormat.replace(“%h”, hours + “”).replace(“%m”, minutes + “”).replace(“%s”, seconds + “”);
}
//apply:
objContainer.innerHTML = strText;
}
function AddZero(num)
{
return ((num >= 0)&&(num < 10))?”0″+num:num+”";
}
function _cdt_GetCurrentTime()
{
var objDate = new Date();
return objDate.getTime();
}
function _cdt_GetRealSeconds(objContainer)
{
var nCurrentTime = _cdt_GetCurrentTime();
var nActivationTime = parseInt(objContainer.getAttribute(“activation_time”));
var nInitialValue = parseFloat(objContainer.getAttribute(“initial_timer_value”));
var nMiliSecondsDiff = (nCurrentTime – nActivationTime);
var nTotalDifference = parseInt(nMiliSecondsDiff / 1000);
var strSecondValue = objContainer.getAttribute(“second_value”);
if (strSecondValue && strSecondValue.length > 0)
{
var nSecondValue = parseFloat(strSecondValue);
if (!isNaN(nSecondValue))
nTotalDifference = parseFloat(nTotalDifference) * nSecondValue;
}
return (nInitialValue – nTotalDifference);
}
sumber :http://www.wahyukurniawan.info

Input Number

<script>
var ok = ” This chip will work”;
var nook = “This chip will not work”;
function check_input()
{
var entry = document.forms.f.textfield.value;
var length = entry.length
document.clear();
res = isNaN(entry) ? “please enter only numbers”: “Press OK to continue”;
alert(res);
if(length == 15) document.write(ok);
else
document.write(nook);
}
</script>
sumber : http://www.wahyukurniawan.info

Membuat Toolbar yang freeze di bawah

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en” lang=”en”>
<head>
<meta http-equiv=”Content-type” content=”text/html; charset=utf-8″ />
<title></title>
<link type=”text/css” rel=”stylesheet” href=”master-siomai.css” />
<style type=”text/css” media=”screen”>
html { height: 100%; }
body { height: 100%; }
#wrapper { position: relative; min-height: 100%; }
* html #wrapper { height: 100%; }
#content { padding-bottom: 25px; }
#toolbar_outer { bottom:0; color:#111111; font-size:11px; height:25px; padding:0; position:fixed; right:0; width:100%; z-index:99; }
#toolbar_outer { position: relative; margin-top: -26px; }
#toolbar {
background:#aaa;
border-right:1px solid #b5b5b5;
overflow:visible !important;
margin-left:15px;
margin-right:15px;
position:relative;
}
#toolbar ul { height: 25px; background: #e5e5e5; border-top: 1px solid #eee; border-left: 1px solid #ddd; }
#toolbar ul li { float: left; padding: 5px; font: normal 110% ‘lucida grande’, tahoma, verdana, arial; border-right: 1px solid #aaa;}
</style>
</head>
<body>
<div id=”wrapper”>
<div id=”content”>
Hello
</div>
</div>
<div id=”toolbar_outer”>
<div id=”toolbar”>
<!– Toolbar –>
<ul>
<li>Applications</li>
<li>testing</li>
</ul>
</div>
</div>
</body>
</html>
sumber : http://www.wahyukurniawan.info

Mengubah warna latar belakang

adalah salah satu komponen utama untuk membuat halaman suatu website menjadi dinamis. Salah satu contoh sederhana adalah kita dapat mengubah warna latar belakang dengan hanya mengubah-ubah suatu list menu. Karena Java Script adalah client side, maka tidak dibutuhkan proses refresh ataupun mengontak server untuk mengubah warna latar belakang, walaupun hal ini semestinya tidak dianjurkan.
Adapun kode untuk mengubah warna latarbelakang adalah :
document.bgColor = “000000″
Scriptnya adalah sebagai berikut.
<FORM>
<SELECT onChange=
“document.bgColor=this.options[this.selectedIndex].value”>
<OPTION VALUE=”40E0D0″> Torquoise
<OPTION VALUE=”2E8B57″> Sea Green
<OPTION VALUE=”87CEEB”> Sky Blue
<OPTION VALUE=”F4A460″> Sandy Brown
<OPTION VALUE=”FFF0F5″> Lavender Blush
<OPTION VALUE=”FF1493″> Deep Pink
<OPTION VALUE=”FFFFFF” SELECTED> White
</SELECT>
</FORM>

Catatan:
Jika kita menggunakan image backgrounf pada tag HTML <BODY> , maka contoh diatas tidak akan ada efeknya.
sumber : http://www.wahyukurniawan.info

Links

Sebuah halaman web dapat berhubungan satu dengan lainnya. Hal ini memudahkan user yang mengunjungi website kita untuk berpindah dari halaman yang satu ke halaman yang lain.
Untuk membuat sebuah link, kita dapat menggunakan tag <a href=”location”>Click Here</a>
Jenis-jenis Link yang ada pada Web:
Ditinjau dari tampilannya:
* Teks Link
adalah bentuk link yang paling sederhana.
Contoh: <a href=”index.php”> Klik disini untuk kembali ke menu utama </a>
Jika kita klik, maka browser akan meredirect kita ke halaman web dengan nama index.php
* Image Link
adalah bentuk link yang diwakili dengan image atau gambar.
Contoh: <a href=”index.php”><img src=”logo.jpg”></a>
Fungsinya sama dengan Teks Link, hanya saja dengan Image Link kita dapat membuat link menjadi lebih menarik dan attractive.
* Flash Link
adalah bentuk link yang diwakili dengan animasi flash. Keunggulannya adalah kita dapat menampilkan link dalam bentuk animasi.
Ditinjau dari destinasinya:
* Berpindah ke halaman lain
Jenis link ini akan meredirect user ke halaman lain, jadi berpindah antar halaman, tetapi masih dalam satu website
Contoh: <a href=”index.php”> Klik disini untuk kembali ke menu utama </a>
* Berpindah ke website lain
Jenis link ini akan meredirect user ke halaman tertentu pada website yang lain. Contoh: <a href=”http://www.wahyukurniawan.info/citahati”> Klik disini untuk berpindah ke website wahyu kurniawan </a>
* Berpindah ke bagian tertentu dari suatu halaman
Apabila kita mempunyai halaman web dengan content yang cukup banyak dan panjang, kita dapat mendefinisikan beberapa link untuk dapat berpindah ke bagian yang kita inginkan. Sebelum kita dapat menggunakan link, kita harus mendefinisikan sebuah anchor (dilambangkan dengan simbol jangkar). Anchor ini adalah tanda dimana user akan diredirect oleh link. Tiap anchor harus memiliki nama.
Contoh gambar anchor:
Adapun tagnya adalah sebagai berikut:
< a name=”section1″></a>
Setalah membuat anchor, barulah kita dapat membuat linknya.
<a href=”#section1″>Klik disini untuk pindah ke bagian 1</a>
* Link to Mail
Link jenis ini adalah link yang digunakan untuk mengirim email ke alamat tertentu. Jika diklik, dia akan membuka program email default yang terinstall di komputer user. Berikut ini adalah sintaks penulisannya.
<a href=”mailto:contact@wahyukurniawan.info”>Kontak kami</a>
sumber :http://www.wahyukurniawan.info

Script

JavaScript adalah aplikasi pemrograman yang dapat kita gunakan untuk membuat halaman situs kita menjadi lebih dinamis dan atraktif. Contoh penggunaan JavaScript yang kita pelajari nantinya adalah bagaimana kita bisa membuat animasi dalam halaman situs kita. Berikut adalah contoh program JavaScript.
Menulis teks pada halaman web
<HTML>
<HEAD>
<TITLE>Contoh Pertama Program JavaScript</TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE = “JavaScript”>
document.write (“Contoh program JavaScript”);
</SCRIPT>

</BODY>
</HTML>
Mengevaluasi penekanan tombol
<HTML>
<HEAD>
<TITLE>Contoh Kedua Program JavaScript</TITLE>
<SCRIPT LANGUAGE = “JavaScript”>
function Tekan ()
{
alert (“Selamat belajar JavaScript!”);
}
</SCRIPT>

</HEAD>
<BODY>
<FORM>
<INPUT TYPE = “button” VALUE = ” Coba tekan tombol ini ”
onClick=”Tekan ()”>
</FORM>
</BODY>
</HTML>
Penjumlahan sederhana
<HTML>
<HEAD>
<TITLE>Jawaban Soal Latihan 1.2</TITLE>
<SCRIPT language = “JavaScript”>
function Tekan ()
{
var Bil1 = parseFloat (document.fmForm.Bilangan1.value);
if (isNaN (Bil1))
Bil1 = 0.0;
var Bil2 = parseFloat (document.fmForm.Bilangan2.value);
if (isNaN (Bil2))
Bil2 = 0.0;
var Hasil = Bil1 + Bil2;
alert (“Hasil penjumlahan = ” + Hasil);
}
</SCRIPT>

</HEAD>
<BODY>
<FORM NAME = “fmForm”>
<TABLE>
<TR>
<TD><DIV ALIGN=right><DT>Bilangan pertama</DT></DIV></TD>
<TD><INPUT TYPE=”text” NAME=Bilangan1></TD>
</TR>
<TR>
<TD><DIV ALIGN=right><DT>Bilangan kedua</DT></DIV></TD>
<TD><INPUT TYPE=”text” NAME=Bilangan2></TD>
</TR>
</TABLE>
<INPUT TYPE=”button” VALUE=”Jumlahkan”
onClick=”Tekan ()”>
<INPUT TYPE=”reset” VALUE=”Reset”></P>
</FORM>
</BODY>
</HTML>

sumber : http://www.wahyukurniawan.info

Komputer Grafik

PENGANTAR
Penggambaran grafik garis lurus dan kurva memerlukan waktu komputasi yang tinggi, untuk mereduksi waktu komputasi yang tinggi tersebut dapat dilakukan dengan peningkatan kemampuan komputasi prosesor dan peningkatan efisiensi algoritma. Algoritma Midpoint merupakan Algoritma dengan dasar operasi bilangan integer, sehingga memerlukan waktu operasi yang lebih sedikit dibandingkan dengan algoritma yang menggunakan operasi bilangan real. Implementasi ke dalam bahasa pemrograman C dari kedua macam algoritma diatas, menunjukkan bahwa waktu komputasi algoritma midpoint lebih cepat sebesar 8 kali pada pembuatan garis lurus, dan lebih cepat sebesar 15 kali pada penggambaran lingkaran, dibandingkan dengan waktu komputasi algoritma yang menggunakan dasar operasi bilangan
riel. Dan waktu komputasi algoritma midpoint lebih cepat sebesar 6 kali pada pembuatan garis lurus, dibandingkan dengan waktu komputasi algoritma yang Breserham telah menggunakan dasar operasi bilangan integer juga.
Algoritma DDA
1. Start at first endpoint.
2. Draw pixel.
3. Step right by one pixel and up by m*change_in_x
1. (But change_in_x is 1 pixel!
2. so just step up by m pixels)
4. Draw pixel.
5. Repeat from step 3, until we reach second endpoint
Pseudo code:
1. Let x = x1; y = y1; m = (y2-y1)/(x2- x1);
2. Draw pixel (x, y)
3. WHILE (x < x2) //i.e. we reached the second endpoint
{
x = x + 1; //step right by one pixel
y = y + m; //step up by m pixels
Draw pixel (ROUND(x), ROUND(y));
}
Banyak yang menganggap bahwa algoritma DDA sangat lambat didalam menggambarkan suatu titik, garis maupun kurva. Berikut ini adalah function untuk menggambar garis dengan algoritma DDA
int line_dda(int x1,int y1,int x2,int y2,int color)
// Algorithm digital differential analyzer
{ int dx,dy,step,k;
float x_increment,y_increment,x,y;
dx = x2-x1; dy = y2-y1;
// determine maximum step
if (abs(dx) > abs(dy)) step=abs(dx); else step=abs(dy);
x_increment = float(dx) / float(step);
y_increment = float(dy) / float(step);
x = x1; y = y1;
putpixel(int (x+0.5),int(y+0.5),color);
for (k=1;k<=step;k++)
{ x = x+x_increment;
y = y+y_increment;
putpixel(int(x+0.5),int(y+0.5),color);
}
return(0);
}
Garis lurus dinyatakan dinyatakan dalam persamaan :
y = mx + c (1)
dimana : m : gradient dan c : konstanta.
Untuk menggambarkan pixel-pixel dalam garis lurus, parameter yang digunakan tergantung dari gradient, jika besarnya gradient diantara 0 dan 1, maka digunakan sumbu x sebagai parameter dan sumbu y sebagai hasil dari fungsi, sebaliknya, bila gradient melebihi 1, maka sumbu y digunakan sebagai parameter dan sumbu x sebagai hasil dari fungsi, hal ini bertujuan untuk menghindari terjadinya gaps karena adanya pixel yang terlewatkan. Hasil dari fungsi biasanya merupakan bilangan real, sedangkan koordinat pixel dinyatakan dalam bilangan integer (x,y), maka diperlukan operasi pembulatan kedalam bentuk integer terdekat. Penggambaran garis lurus dengan metode diatas dimulai dengan operasi bilangan real untuk menghitung gradient m dan konstanta c.
m = (y2 - y1 ) / (x2-x1) (2)
c = y1 – m* x1 (3)
Operasi bilangan real berikutnya adalah menghitung nilai y dengan persamaan (1) untuk mendapatkan koordinat piksel (x,y), untuk setiap nilai x, dari =x1 sampai x=x2, operasi inilah yang perlu dihindari, karena operasi ini memerlukan waktu operasi yang besar.
Algoritma Bresenham
Bresenham pada tahun 1965, melakukan perbaikan dari algoritma perhitungan koordinat piksel yang menggunakan persamaan (1), dengan cara menggantikan operasi bilangan riel perkalian dengan operasi penjumlahan, yang kemudian dikenal dengan Algoritma Bresenham. Pada algoritma bresenham, nilai y kedua dan seterusnya, dihitung dari nilai y sebelumnya, sehingga hanya titik y pertama yang perlu dilakukan operasi secara lengkap. Perbaikan algoritma ini ternyata tidak menghasilkan perbaikan yang cukup siginifikan. Perbaikan berikutnya dilakukan dengan cara menghilangkan operasi bilangan real
dengan operasi bilangan integer. Operasi bilangan integer jauh lebih cepat dibandingkan dengan operasi bilangan real, terutama pada penambahan dan pengurangan.
int line_bre(int x1,int y1,int x2,int y2,int color)
// Algorithm Bresenham
{ int dx,dy,x,y,x_end;
int p,const1,const2;
dx = x2-x1; dy = y2-y1;
p = 2*dy-dx; y = y1;
const1 = 2*dy; const2 = 2*(dy-dx);
// determine which point to use as start, which as end
if (x1 > x2)
{ x = x2; y = y2; x_end = x1; }
else
{ x = x1; y = y1; x_end = x2; }
putpixel(x,int(y+0.5),color);
while ( x < x_end )
{ x++;
if ( p < 0 )
p = p+const1;
else
{ y = y+1;
p = p+const2;
}
putpixel(x,int(y+0.5),color);
}
return(0);
}
KOMPUTER GRAFIK DENGAN QUICK BASIC
Quick Basic adalah bahasa pemrograman high level yang cukup terstruktur, walaupun mengijinkan beberapa lompatan didalam struktur programnya. Untuk komputer grafik, Quick Basic menyediakan perintah-perintah yang cukup mudah dan sederhana, tentunya untuk menghasilkan output grafik yang sederhana. Quick Basic adalah compiler, sama seperti Turbo Pascal ataupun Borland C++, jadi jika memang diperlukan, Quick Basic mampu mengkompilasi program Basic menjadi program executable.
Mode Grafis di dalam Quick Basic
Di dalam Quick Basic, inisialisasi mode grafis, cukup dengan memberikan sebuah perintah SCREEN yang diikuti dengan bilangan integer. Berikut ini adalah mode SCREEN yang sering digunakan dalam pemrograman grafis
SCREEN 0 : mode teks, dipanggil untuk mengakhiri mode grafis
SCREEN 1 : mode grafis resolusi rendah 320x200 pixel, maksimum 4 warna
SCREEN 12 : mode grafis resolusi tinggi 640x480 pixel, maksimum 16 warna
SCREEN 13 : mode grafis resolusi rendah 300x200 pixel, maksimum 256 warna. Mode grafis ini yang sering digunakan dalam pemrograman animasi ataupun game pada era DOS
' ACAX Experiment Program
SCREEN 12
CLS
LINE (1, 1)-(640, 480), 1, BF
LINE (30, 30)-(610, 450), 0, BF
Ulang:
x1 = RND * 575 + 35
x2 = RND * 550 + 35
x2 = (x1 - x2) / 3 + x2
y1 = RND * 350 + 55
y2 = 450
LINE (x1, y1)-(x2, y2), RND * 6 + 1, BF
LINE (x1, y1)-(x2, y2), 0, B
FOR Delay = 1 TO 800
NEXT
IF INKEY$ = CHR$(13) THEN
SCREEN 0
END
END IF
GOTO Ulang
Program diatas akan menggambar kotak dengan warna dan posisi serta ukuran random. Jika anda lihat program Quick Basic diatas, akan terlihat bahwa program tersebut akan diulang terus dengan adanya perintah GOTO Ulang. Program akan berhenti jika kita menekan tombol keyboard ENTER sebagaimana diberikan dari perintah IF INKEY$=CHR$(13) adalah pengecekan terhadap penekanan tombol ENTER
Perintah-perintah grafik Quick Basic
Perintah-perintah dasar di dalam komputer grafik pada dasarnya hampir sama antara bahasa pemrograman yang satu dengan lainnya.
Apa yang dimaksud dengan pixel? Pixel adalah satu titik yang ada di layar monitor, sedangkan resolusi adalah kumpulan pixel yang membentuk suatu gambar atau dapat juga dikatakan kumpulan total dari pixel-pixel.
Perintah PSET dan PRESET, berfungsi menghidupkan / mematikan pixel pada posisi koordinat tertentu.
Perintah LINE akan menggambar garis diawali dari posisi x1,y1 sampai dengan x2,y2. Berikut adalah Rumus Perintah LINE;
LINE (x1,y1) - (x2,y2), color
dimana color atau warna akan sangat bergantung pada mode grafik yang anda gunakan. Pada mode grafis tertentu, dikenal sistem palette dimana kita dapat mencampur warna dan menghasilkan variasi warna yang sangat banyak.
Perintah CIRCLE, dapat digunakan untuk menggambar lingkaran ataupun kurva sesuai dengan nilai yang kita masukkan.
Beberapa perintah dasar grafik yang lainnya akan dapat dengan mudah dipelajari di dalam Help Quick Basic.
' Gambar Kuas Cat
SCREEN 1
CLS
x = 200
y = 175
COLOR 0, 1
CIRCLE (x - 122, y - 118), 3, 3, , , 1
CIRCLE (x - 135, y - 25), 100, 3, .9, 1.6, 1
CIRCLE (x - 66, y - 193), 100, 3, 3.9, 4.68, 1
CIRCLE (x - 80, y - 64), 30, 3, , 1.4, 1
CIRCLE (x - 51, y - 124), 30, 3, 3.9, 5.5, 1
PSET (x - 50, y - 63), 3
DRAW "m+6,+2m+20,-40nm-6,-2m+18,+6m-20,+40m-18,-6"
DRAW "m+60,+20m+20,-40m-60,-20"
PAINT (x - 47, y - 65), 3
PAINT (x - 37, y - 65), 1, 3
CIRCLE (x - 66, y - 193), 100, 2, 3.9, 4.68, 1
CIRCLE (x - 80, y - 64), 30, 2, , 1.4, 1
PSET (x - 44, y - 61), 0
DRAW "nm+20,-40br14bd6nm+22,-44bl4m+22,-44"
a$ = INPUT$(1)
WIDTH 80
SCREEN 0
END
Program diatas akan menggambar sebuah kuas cat di layar. Yang perlu diperhatikan adalah perintah DRAW sangat bermanfaat dalam menggambar suatu object dengan bentuk yang tidak beraturan. Bandingkanlah dengan program berikut:
' Candle Picture using Statement DRAW
SCREEN 1
CLS
x = 160
y = 148
COLOR 0, 0
CIRCLE (x + 15, y - 26), 20, 3, , , 1
CIRCLE (x + 15, y - 26), 14, 3, , , 1
PAINT (x + 15, y - 10), 2, 3
CIRCLE (x - 53, y - 20), 20, 3, 4.8, .3, .6
CIRCLE (x + 9, y - 20), 20, 3, 2.84, 4.6, .6
PRESET (x - 35, y - 24), 3
DRAW "l2h2u2e2r30f2d2g2l3"
PRESET (x - 56, y - 1), 3
DRAW "h2u2e2r5br60r5f2d2g2l70"
PAINT (x - 48, y - 3), 2, 3
DRAW "bu5c3r52bu15bl15l22"
PRESET (x - 32, y - 31), 1
DRAW "nr20u35g2l1u2e2u14m+22,-5f2d13f1d2g1l1h1d38"
PAINT (x - 30, y - 35), 1
PRESET (x - 32, y - 65), 0
DRAW "e1u5e1u3f2d8g1d1f1r3u7e2u1e1u6e1f1r2e1u1h1r2f2r2d7"
PRESET (x - 22, y - 88), 3
DRAW "u4"
a$ = INPUT$(1)
WIDTH 80
SCREEN 0
END
Program diatas akan menggambarkan sebuah lilin. Jika kita perhatikan, kedua program tersebut menggunakan mode screen 1, yang hanya dapat menampilkan 4 warna, tetapi karena sistem palette yang didapat dari perintah COLOR, maka warna yang dihasilkan dari program pertama berbeda dengan program kedua. Sedangkan perintah PAINT, digunakan untuk mengisi ruang yang kosong dengan warna tertentu. Bereksperimen dengan perintah-perintah grafik akan dapat membantu untuk menghasilkan bentuk-bentuk gambar yang menarik.
Rumus perintah DRAW
DRAW commandstring$
dimana commandstring$ adalah ekspresi yang berisi kumpulan perintah DRAW sbb;
Perintah menggambar garis dan memindah kursor
D[n%] Memindah kursor ke arah selatan sebanyak n% units.
E[n%] Memindah kursor ke arah timur laut sebanyak n% units.
F[n%] Memindah kursor ke arah tenggara sebanyak n% units.
G[n%] Memindah kursor ke arah barat daya sebanyak n% units.
H[n%] Memindah kursor ke arah barat laut sebanyak n% units.
L[n%] Memindah kursor ke arah barat sebanyak n% units.
M[{+|-}]x%,y% Memindah kursor ke koordinat (x%,y%).
R[n%] Memindah kursor ke arah barat sebanyak n% units.
U[n%] Memindah kursor ke arah utara sebanyak n% units.
Setelah mempelajari beberapa perintah dasar komputer grafik pada Quick Basic, anda dapat mempraktekkan dengan menggambar bentuk-bentuk sesuai keinginan anda.
TEORI DASAR ANIMASI
Apa yang dimaksud dengan Animasi? Tentunya kita sering mendengar istilah animasi yang biasa dikaitkan dengan film kartun. Secara gampang, animasi adalah object yang bergerak. Jika kita belajar komputer grafik, kita tidak hanya belajar menciptakan gambar-gambar object yang statis, tetapi kita juga belajar bagaimana membuat object-object tersebut bergerak. Hal inilah yang disebut dengan animasi.
Animasi di dalam Quick Basic ataupun pada program lainnya secara umum dapat dilihat dari algoritma sebagai berikut:
1. Gambar object yang akan dianimasikan
2. Simpan ke dalam variabel
3. Letakkan pada posisi awal
4. Hapus object
5. Letakkan pada posisi baru
6. Ulangi langkah no. 4 sampai selesai
Jadi pada dasarnya animasi pada komputer grafik adalah menghapus gambar pada posisi lama dan menggambar di posisi baru, demikian seterusnya. Karena kecepatan proses komputer, maka semuanya akan terlihat seolah-olah bergerak. Yang perlu diperhatikan adalah object yang dianimasikan harus benar-benar sama, jika tidak maka animasinya tidak akan terlihat bagus.
Berikut adalah contoh program animasi dengan kontrol keyboard
'Mendefiniskan Tipe Integer untuk semua variabel yang digunakan
DEFINT A-Z
'Membersihkan layar
CLS
'Inisialisasi Grafik, Screen 1 = CGA 320x200 4 warna
SCREEN 1
'Mengeset Warna
COLOR 0, 0
'Memesan array untuk Sprites
DIM nob(39)
'Looping untuk membaca data-data gambar
FOR i = 0 TO 39
READ nob(i)
NEXT
'Data-data gambar Sprite
DATA 32
DATA 14,20481,16389,22277,20693,1797,4308,1797,4308,24321
DATA 16629,-256,255,15360,60,-29694,-32718,3850,-24336,778,-24384,10
DATA -24576,10,-24576,-32726,-22526,-24406,-22006,0,0,0,0,0,0,0,0,0,0
'Posisi Koordinat Awal Sprite
xpos = 150: ypos = 150
'Gerakan Sprite per pixel
xofset = 2: yofset = 2
'Munculkan Sprite di Layar
PUT (xpos, ypos), nob
main.loop:
'Simpan nilai xpos dan ypos
old.xpos = xpos
old.ypos = ypos
'Baca Keyboard Buffer
keyb$ = INKEY$
'Jika tidak ada yang ditekan, lompat ke main.loop
IF keyb$ = "" THEN GOTO main.loop
'Jika ada yang ditekan, lompat ke subrutin cek.button
GOSUB cek.button
'Rutin berikut ini untuk pengecekan batas layar
GOSUB cek.batas
'Letakkan Sprite di posisi lama untuk menghapus sprite
PUT (old.xpos, old.ypos), nob, XOR
'Gambar lagi Sprite di posisi koordinat baru
PUT (xpos, ypos), nob, XOR
'lompat lagi ke main.loop
GOTO main.loop
'Rutin pengecekan batas layar agar tidak ERROR
cek.batas:
IF xpos < 1 THEN xpos = 300
IF xpos > 300 THEN xpos = 1
IF ypos > 185 THEN ypos = 5
IF ypos < 5 THEN ypos = 185
RETURN
'Rutin pengecekan tombol keyboard
cek.button:
'Jika panjang keyboard code tidak sama dengan 2, artinya bukan arrowkey
'lompat ke not.arrow
IF LEN(keyb$) <> 2 THEN GOSUB not.arrow
‘Ambil karakter yang kedua
keyb = ASC(RIGHT$(keyb$, 1))
‘cek tombol atas
IF keyb = 72 THEN ypos = ypos – yofset
‘cek tombol kiri
IF keyb = 75 THEN xpos = xpos – xofset
‘cek tombol kanan
IF keyb = 77 THEN xpos = xpos + xofset
‘cek tombol bawah
IF keyb = 80 THEN ypos = ypos + yofset
not.arrow:
‘Jika ditekan tombol q maka program akan berhenti
IF keyb$ = “q” THEN
WIDTH 80
SCREEN 0
COLOR 7, 0
CLS
END
END IF
RETURN
Contoh program animasi diatas cukup rumit dengan adanya tambahan rutin untuk menggerakkan object dengan tombol keyboard, yang umumnya adalah tombol arrow key, disamping itu kita juga harus mengecek dan memeriksa penekanan tombol q dimana program akan berhenti apabila tombol q ditekan. Dan akhirnya, penambahan rutin untuk mendeteksi batas layar, yaitu batas atas, bawah, kiri dan kanan. Jika kita perhatikan, untuk gambar objectnya menggunakan perintah READ dan DATA yang diikuti sekumpulan angka dan bilangan. Pada pertemuan berikutnya akan dibahas tentang program untuk menggambar bentuk-bentuk object secara mudah, dimana output dari program tersebut berupa file dengan kumpulan bilangan-bilangan seperti pada program diatas.
Pengertian Sprite di dalam Komputer Grafik
Jika anda mendengar istilah sprite dalam komputer grafik, yang dimaksud adalah object untuk animasi. Agar dapat dianimasikan, sprite harus disimpan di dalam suatu variabel array, yang di dalam Quick Basic dideklarasikan dengan perintah DIM.
Menghitung ukuran sprite yang disimpan
Ukuran sprite yang disimpan akan memakan tempat di memory. Oleh karena itu, kita harus dapat menghitung dengan tepat, ukuran variabel array yang digunakan untuk menyimpan sprite tersebut. Sebelum kita dapat menghitung, kita perlu mengetahui bahwa beberapa parameter untuk setiap mode grafik memiliki nilai yang berbeda. Dalam hal ini kita akan membandingkan mode grafik SCREEN 1, 12 dan 13
Mode Grafik Bits-per-pixel-per-plane Planes Resolusi
SCREEN 1 2 1 320×200
SCREEN 12 1 4 640×480
SCREEN 13 8 1 320×200
Adapun formula atau rumusnya adalah sebagai berikut;
size% = 4 + INT(((PMAP (x2!, 0) – PMAP (x1!, 0) + 1) *
(bits-per-pixel-per-plane%) + 7) / 8) * planes% *
(PMAP (y2!, 1) – PMAP (y1!, 1) + 1)
Setelah kita dapatkan nilai size / ukurannya, maka kita langsung masukkan nilai tersebut dengan menggunakan perintah DIM, contoh:
DIM sprite(size%)
Sedangkan looping pembacaan data gambarnya, haruslah diawali dari 0 sampai dengan nilai size% yang sudah didapatkan.
COLLISION DETECTION
Disebut juga Deteksi Tubrukan. Yang dimaksud dengan tubrukan disini adalah pertemuan antara sprite yang satu dengan lainnya. Jika kita sudah mampu membuat animasi sprite, tentunya kita akan mencoba memasukkan lebih dari satu sprite ke layar. Collision Detection digunakan untuk mendeteksi apa yang harus dikerjakan jika sprite-sprite bertemu atau bertubrukan. Suatu contoh, apabila kita memiliki 3 buah sprite A, B dan C. Keadaan yang terjadi pada saat sprite A menubruk sprite B mungkin akan berbeda dengan keadaan yang terjadi apabila sprite B menubruk sprite C. Collision Detection akan memberi signal kepada kita dan dapat memilah-milah sprite mana yang sedang bertubrukan. Collision Detection akan sangat bermanfaat dalam Teknik Simulasi ataupun dalam aplikasi program permainan.
Metode Deteksi Tubrukan
Sebenarnya ada beberapa metode, tetapi yang akan dibahas disini ada tiga yaitu;
Metode Posisi Absolut
Metode ini akan menentukan satu atau beberapa posisi koordinat absolut pada layar, sehingga apabila ada sprite yang menubruk posisi ini, akan dijalankan rutin tubrukan.
Kelemahan:
* Memboroskan memory apabila menggunakan multi-screen, karena kita akan mengecek berulang-ulang
* Sulit membedakan sprite yang menubruk posisinya
Metode Pengecekan Warna
Metode ini akan mengecek, jika warna di sekelilingnya masih 0 (hitam), maka tubrukan belum terjadi. Sebaliknya jika tidak sama dengan 0, maka tubrukan terjadi.
Kelemahan:
* Hanya bisa digunakan untuk layar dengan latar belakang gelap
Metode Target Index
Metode ini akan membagi satu layar menjadi beberapa cell atau komponen. Untuk beberapa program permainan arcade sederhana, metode ini cukup akurat digunakan untuk mendeteksi tubrukan, dan metode ini juga bisa membedakan jenis-jenis sprite yang mengalami tubrukan dan rutin tubrukan yang akan dijalankan apabila terjadi tubrukan.
Mode Grafik 13 Heksa
Pada era DOS tahun 90-an, mode grafik ini sangat populer digunakan dalam program permainan yang populer saat itu. Perusahaan Game berlomba-lomba meluncurkan game-game 2 Dimensi dengan latar belakang yang bagus (pada saat itu) karena mampu menampilkan variasi warna sebanyak 256 warna. Hal ini tentunya sangat menyenangkan dan merupakan terobosan pada saat itu setelah Nintendo yang juga sukses meluncurkan game 16 warnanya. Mode Grafik ini dipilih karena bagus dan cepat. Game-game animasi saat itu ditulis dengan menggunakan bahasa pemrograman C yang terkenal dengan bahasa pemrograman tingkat menengah, masih dekat dengan bahasa manusia, tetapi memiliki kemampuan berinteraksi langsung dengan mesin yang cukup canggih.
Mode Grafis 13 Heksa dimulai pada alamat segmen memory A000:0000, sedangkan pada Quick Basic, anda cukup menginisialisasi mode grafik ini dengan memberikan satu perintah sederhana SCREEN 13. Dengan Mode Grafik ini, kita dapat menghasilkan gambar yang cukup bagus. Program berikut akan menampilkan gambar tengkorak yang cukup bagus;
DEFINT A-Z
SCREEN 13
CLS
DIM Face4(715)
FOR i = 0 TO 715
READ Face4(i)
NEXT
LINE (88, 8)-(121, 56), 15, B
PUT (90, 10), Face4
a$ = INPUT$(1)
WIDTH 80
COLOR 7, 0
CLS
‘Data IV
DATA 240 , 45 , 0 , 0 , 0 , 2305 , 1 , 0 , 0 , 0
DATA 0 , 256 , 2357 , 2313 , 1 , 0 , 0 , 0 , 0 , 257
DATA 2305 , 0 , 0 , 0 , 0 , 0 , 0 , 13577 , 265 , 257
DATA 0 , 0 , 0 , 0 , 257 , 309 , 0 , 0 , 1542 , 1542
DATA 6 , 0 , 13569 , 2305 , 1 , 1 , 0 , 0 , 0 , 2305
DATA 9 , 0 , 1542 , 1542 , 1542 , 1542 , 0 , 13568 , 257 , 265
DATA 0 , 0 , 0 , 256 , 13569 , 1 , 1536 , 1542 , 16646 , 16961
DATA 1601 , 6 , 2304 , 265 , 2305 , 0 , 0 , 0 , 256 , 13577
DATA 0 , 1542 , 16961 , 16706 , 16963 , 16706 , 6 , 256 , 309 , 257
DATA 1 , 0 , 0 , 256 , 2357 , 0 , 16646 , 16962 , 16962 , 17218
DATA 16963 , 1601 , 0 , 2357 , 1 , 1 , 0 , 0 , 2304 , 309
DATA 1536 , 16961 , 16962 , 16962 , 3855 , 17219 , 1601 , 0 , 13577 , 257
DATA 256 , 0 , 0 , 13569 , 9 , 1536 , 1601 , 16902 , 16706 , 3855
DATA 17217 , 16707 , 6 , 13569 , 265 , 1 , 0 , 256 , 2305 , 1
DATA 16646 , 16646 , 1602 , 3846 , 16911 , 3855 , 16963 , 6 , 2304 , 309
DATA 257 , 0 , 256 , 265 , 0 , 16902 , 16705 , 3855 , 1551 , 1551
DATA 16911 , 16963 , 1601 , 256 , 2357 , 257 , 0 , 2305 , 257 , 0
DATA 1542 , 16962 , 17219 , 16963 , 3905 , 17167 , 17217 , 1602 , 256 , 13569
DATA 257 , 1 , 265 , 0 , 1536 , 6 , 17218 , 17219 , 16707 , 3855
DATA 17219 , 16707 , 1542 , 0 , 13569 , 265 , 257 , 309 , 0 , 1536
DATA 6 , 3906 , 3855 , 16655 , 3855 , 3855 , 17217 , 1603 , 0 , 2304
DATA 2357 , 257 , 309 , 0 , 0 , 1536 , 17217 , 3855 , 3855 , 3906
DATA 3855 , 3907 , 66 , 0 , 256 , 13577 , 265 , 309 , 0 , 1536
DATA 16705 , 16961 , 3855 , 3855 , 3906 , 3907 , 17167 , 66 , 0 , 0
DATA 2305 , 2313 , 2313 , 0 , 16902 , 16963 , 16962 , 17219 , 3907 , 16911
DATA 3855 , 16963 , 1601 , 0 , 0 , 256 , 265 , 13569 , 0 , 16705
DATA 16646 , 16705 , 16962 , 17218 , 3906 , 16961 , 16962 , 16706 , 6 , 0
DATA 0 , 257 , 2305 , 1536 , 65 , 0 , 16902 , 16705 , 17218 , 16705
DATA 16961 , 17219 , 17219 , 1601 , 0 , 0 , 257 , 2305 , 1536 , 6
DATA 0 , 1536 , 1601 , 16962 , 16646 , 16707 , 1542 , 16646 , 16707 , 0
DATA 256 , 0 , 265 , 1536 , 6 , 0 , 0 , 16646 , 16646 , 17217
DATA 1601 , 0 , 0 , 16646 , 0 , 0 , 0 , 9 , 1536 , 65
DATA 0 , 0 , 16896 , 1542 , 16646 , 6 , 0 , 0 , 1536 , 0
DATA 1 , 0 , 1 , 1536 , 1602 , 0 , 0 , 16640 , 16902 , 1542
DATA 0 , 0 , 0 , 1536 , 0 , 1 , 0 , 0 , 1536 , 16706
DATA 0 , 0 , 16646 , 16705 , 1601 , 0 , 0 , 0 , 1542 , 0
DATA 1 , 0 , 0 , 1536 , 17217 , 1602 , 1542 , 16705 , 17217 , 1601
DATA 6 , 0 , 1536 , 16646 , 6 , 1 , 0 , 0 , 1536 , 16902
DATA 17167 , 16962 , 16706 , 16963 , 16963 , 1601 , 1542 , 1542 , 1602 , 6
DATA 257 , 0 , 0 , 1536 , 16646 , 1601 , 16705 , 16962 , 66 , 16962
DATA 17219 , 3907 , 17167 , 1601 , 0 , 256 , 257 , 0 , 0 , 1601
DATA 1542 , 1542 , 16961 , 6 , 17158 , 16705 , 16962 , 16706 , 1542 , 0
DATA 256 , 2313 , 0 , 0 , 16640 , 16706 , 1542 , 16961 , 0 , 17152
DATA 1542 , 1542 , 1542 , 65 , 0 , 0 , 13569 , 0 , 0 , 0
DATA 0 , 1601 , 16961 , 0 , 16896 , 1601 , 16646 , 16706 , 0 , 0
DATA 0 , 256 , 0 , 0 , 0 , 0 , 1542 , 16962 , 16646 , 16902
DATA 1602 , 1601 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 6 , 1536 , 16961 , 16705 , 16961 , 1601 , 6 , 1536 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 6 , 1536 , 16705 , 16962 , 16706
DATA 1601 , 6 , 1536 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 65 , 1536 , 1542 , 1542 , 1542 , 1542 , 6 , 1536 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 1601 , 1536 , 1602 , 1601 , 1601
DATA 1601 , 65 , 16640 , 6 , 0 , 0 , 0 , 0 , 0 , 0
DATA 16902 , 1536 , 1542 , 1603 , 1603 , 1602 , 6 , 16646 , 1542 , 0
DATA 0 , 0 , 0 , 0 , 0 , 16896 , 16646 , 1542 , 1542 , 1542
DATA 16646 , 6 , 1542 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 1536 , 1602 , 16706 , 16655 , 16655 , 16706 , 1536 , 6 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0 , 16705 , 1542 , 1602 , 1602
DATA 6 , 1542 , 0 , 0 , 0 , 0 , 256 , 0 , 0 , 0
DATA 0 , 16902 , 1601 , 0 , 6 , 16646 , 1542 , 0 , 0 , 0
DATA 0 , 256 , 1 , 0 , 0 , 0 , 16640 , 17218 , 17167 , 16963
DATA 16705 , 6 , 0 , 0 , 0 , 0 , 256 , 265 , 0 , 0
DATA 0 , 1536 , 16961 , 17219 , 16706 , 6 , 0 , 0 , 0 , 0
DATA 0 , 256 , 2357 , 1 , 0 , 0 , 0 , 1542 , 16705 , 6
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 13621 , 257 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 0 , 0 , 13621 , 265 , 1 , 0 , 0 , 0 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
DATA 0 , 0 , 0 , 0 , 0 , 0
Mengenal Format Gambar Quick Basic
Format Gambar Quick Basic dipetakan ke dalam sekumpulan bilangan integer. File-file gambar dapat dijadikan satu di dalam program utama atau kita letakkan di dalam file eksternal yang dapat dipanggil. Berikut ini adalah contoh perintah untuk membaca file teks dari program QuickBasic:
OPEN “box.shp” FOR INPUT AS #1
DIM SHARED box(95): FOR i = 0 TO 95: INPUT #1, box(i): NEXT: CLOSE #1
Misalnya kita telah membuat file box.shp yang berisi sekumpulan bilangan integer untuk gambar kita, maka dapat kita buka dengan perintah OPEN untuk selanjutnya kita gunakan looping untuk membaca data-data gambar kita.
Palette
Jika anda perhatikan seorang pelukis yang hendak melukis. Terkadang, dia mencampurkan beberapa cat sehingga menjadi variasi warna yang bermacam-macam. Kira-kira gambaran seperti ini jugalah yang dikenal dalam Palette Komputer Grafik. Dengan Sistem Palette, kita dapat menghasilkan variasi warna yang tidak monoton.
Ini adalah penggalan program untuk menyimpan palette
Saving:
DIM pal&(255)
DEF SEG = VARSEG(pal&(0))
FOR col% = 0 to 255
OUT &h3c7, col%
POKE VARPTR(pal&(col%)), INP(&h3c9)
POKE VARPTR(pal&(col%)) + 1, INP(&h3c9)
POKE VARPTR(pal&(col%)) + 2, INP(&h3c9)
NEXT
BSAVE “FileName.pal”, VARPTR(pal&(0)), 1023
sedangkan berikut ini adalah penggalan program untuk memanggil sistem palette yang sudah disimpan
Loading:
DIM pal&(255)
DEF SEG = VARSEG(pal&(0))
BLOAD “FileName.pal”, VARPTR(pal&(0))
FOR col% = 0 to 255
OUT &h3c8, col%
OUT &h3c9, PEEK VARPTR(pal&(col%))
OUT &h3c9, PEEK VARPTR(pal&(col%)) + 1
OUT &h3c9, PEEK VARPTR(pal&(col%)) + 2
NEXT
Sistem Palette akan menyimpan warna RGB (Red, Green, Blue), dimana masing-masing dapat menyimpan nilai 0 sampai dengan 255.
Perintah diatas langsung mengakses hardware port (perintah OUT) sehingga menghasilkan kecepatan yang 100x lebih cepat dibandingkan perintah PALETTE dari QuickBasic sendiri.
Struktur File Bitmap .BMP 256 Color
File Gambar ada bermacam-macam. Yang paling sering digunakan adalah JPEG, karena sistem kompresinya sehingga menghasilkan gambar yang bagus dengan ukuran yang sangat kecil. Dalam kesempatan ini kita akan mempelajari struktur file BMP 256 warna yang sangat sederhana, karena tidak dikompresi. Secara umum struktur file .BMP adalah sebagai berikut:
54 Bytes awal digunakan untuk menyimpan Header File BMP
1024 Bytes berikutnya digunakan untuk menyimpan informasi palette, yang disusun BGR (Blue, Green, Red)
Sisa Bytes berikutnya adalah informasi gambar
Berikut adalah program untuk menampilkan file .BMP 256 warna
TYPE BMPHeaderType
id AS STRING * 2 ‘Should be “BM”
size AS LONG ‘Size of the data
rr1 AS INTEGER ‘
rr2 AS INTEGER ‘
offset AS LONG ‘Position of start of pixel data
horz AS LONG ‘
wid AS LONG ‘Image width
hei AS LONG ‘Image height
planes AS INTEGER ‘
bpp AS INTEGER ‘Should read 8 for a 256 colour image
pakbyte AS LONG ‘
imagebytes AS LONG ‘Width*Height
xres AS LONG ‘
yres AS LONG ‘
colch AS LONG ‘
ic AS LONG ‘
pal AS STRING * 1024 ‘Stored as
END TYPE
DIM BmpHeader AS BMPHeaderType
OPEN “marlex.bmp” FOR BINARY AS #1
GET #1, , BmpHeader
SCREEN 13 ‘ Set graphics mode
a$ = BmpHeader.pal ‘ Pal is stored in a 1024 character string
OUT &H3C8, 0 ‘ Start writing from Colour 0
FOR I% = 1 TO 1024 STEP 4
b% = ASC(MID$(a$, I%, 1)) \ 4 ‘blue
g% = ASC(MID$(a$, I% + 1, 1)) \ 4 ‘green
r% = ASC(MID$(a$, I% + 2, 1)) \ 4 ‘red
‘ I% + 3 is set to zero.
OUT &H3C9, r% ‘ Set the colour.
OUT &H3C9, g%
OUT &H3C9, b%
NEXT
DIM pixel AS STRING * 1 ‘ Our pixel “byte”.
iHeight% = BmpHeader.hei – 1 ‘ Subtract 1 for actual screen position
iWidth% = BmpHeader.wid – 1 ‘
‘Check Bytes
Byte.Remind = BmpHeader.imagebytes – (BmpHeader.wid * BmpHeader.hei)
IF Byte.Remind > 0 THEN
‘This will applied if there is unused bytes
‘we have to make modification on image width
iWidth% = iWidth% + (Byte.Remind / BmpHeader.hei)
END IF
key$ = INPUT$(1)
FOR y% = iHeight% TO 0 STEP -1 ‘ Countdown for upsidedown image
FOR x% = 0 TO iWidth%
GET #1, , pixel ‘ read pixel ‘ Read one pixel (byte)
PSET (x%, y%), ASC(pixel) ‘ Pixel is actually a string so we get the pixel
‘ number by requesting the “ASC” value
NEXT x%, y%
CLOSE #1
Kita dapat melewatkan 54 bytes pertama yang digunakan untuk menyimpan informasi header. 1024 bytes selanjutnya digunakan untuk menyimpan informasi palette. Yang menarik adalah informasi palette disusun terbalik menurut aturan BGR (Blue Green Red) yang biasanya kita mengenal RGB (Red, Green, Blue). Dan byte-byte selanjutnya adalah informasi gambar yang disusun dari bawah ke atas, jadi kalau kita perhatikan jika membuka file .BMP adalah dari bawah ke atas. Beberapa file bitmap .BMP mengabaikan beberapa byte yang ada di dalam filenya, sehingga penggunaan program LoadBmp terkadang tidak akan menghasilkan gambar yang diharapkan.
Contoh: kita akan mencoba membaca informasi header dari file .BMP
TYPE BMPHeaderType
ID AS STRING * 2 ‘Should be “BM”
size AS LONG ‘Size of the data
rr1 AS INTEGER ‘
rr2 AS INTEGER ‘
Offset AS LONG ‘Position of start of pixel data
horz AS LONG ‘
wid AS LONG ‘Image width
hei AS LONG ‘Image height
Planes AS INTEGER ‘
bpp AS INTEGER ‘Should read 8 for a 256 colour image
pakbyte AS LONG ‘
imagebytes AS LONG ‘Width*Height
xres AS LONG ‘
yres AS LONG ‘
colch AS LONG ‘
ic AS LONG ‘
pal AS STRING * 1024 ‘Stored as
END TYPE
DIM BmpHeader AS BMPHeaderType
filename$ = “marlex.bmp”
OPEN filename$ FOR BINARY AS #1
GET #1, , BmpHeader
COLOR 15, 0
SCREEN 0
CLS
PRINT “File .BMP Information”
PRINT “Filename : “, filename$
PRINT “BMP ID : “, BmpHeader.ID
PRINT “Size in bytes : “, BmpHeader.size
PRINT “RR1 : “, BmpHeader.rr1
PRINT “RR2 : “, BmpHeader.rr2
PRINT “Horz : “, BmpHeader.horz
PRINT “Start Offset : “, BmpHeader.Offset
PRINT “Total Planes : “, BmpHeader.Planes
PRINT “BitPerPlanes : “, BmpHeader.bpp
PRINT “X-Res : “, BmpHeader.xres
PRINT “Y-Res : “, BmpHeader.yres
PRINT “Width : “, BmpHeader.wid
PRINT “Height : “, BmpHeader.hei
PRINT “Image Bytes : “, BmpHeader.imagebytes
PRINT “Pak Bytes : “, BmpHeader.pakbyte
PRINT “Colch : “, BmpHeader.colch
PRINT “IC : “, BmpHeader.ic
key$ = INPUT$(1)
Outputnya adalah sbb:
Filename : marlex.bmp
BMP ID : BM
Size in bytes : 1590
RR1 : 0
RR2 : 0
Horz : 40
Start Offset : 1078
Total Planes : 1
BitPerPlanes : 8
X-Res : 0
Y-Res : 0
Width : 15
Height : 32
Image Bytes : 512
Pak Bytes : 0
Colch : 0
IC : 0
Jika kita lihat ukuran file bmpnya adalah 1590 bytes , sedangkan ukuran imagenya sendiri adalah 512 bytes. Kalau kita jumlahkan, 54 +1024+512 = 1590 bytes!!! Ini artinya semua byte yang ada di dalam file digunakan untuk menampilkan gambar. (http://www.wahyukurniawan.info)

Grafika Komputer


“Grafik komputer” atau Grafika komputer (Computer graphics) adalah salah satu cabang ilmu komputer yang berhubungan dengan pembuatan dan manipulasi gambar visual secara digital. Bentuk dari grafik komputer ini berawal dari grafika komputer 2D yang merupakan bentuk sederhana dari grafik komputer ini.
Kemudian grafik komputer mengalami perkembanagn yang lebih canggih dari teknologi 2D menjadi grafika komputer 3D. Cabang ilmu komputer ini emmiliki dua cabang lahi, yaitu pemrosesan citra (image processing), dan pengenalan pola (pattern recognition). Grafik komputer sering dikenal juga dengan istilah visualisasi data.
Bagian dari disiplin ilmu grafik komputer meliputi:
• Geometri: yaitu ilmu untuk mempelajari cara menggambarkan permukaan bidang
• Animasi: yaitu ilmu untuk mempelajari cara menggambarkan dan memanipulasi gerakan
• Rendering: yaitu ilmu untuk mempelajari algoritma untuk menampilkan efek cahaya
• Citra (Imaging): yaitu ilmu untuk mempelajari cara pengambilan dan penyuntingan gambar.
Pada perkembangan saat ini, pemanfaatan teknologi grafika komputer
sangat dibutuhkan untuk memvisualisasikan objek-objek dunia nyata menjadi
objek grafis, dan implementasi yang real yaitu digunakannya teknologi grafika
komputer pada fraktal untuk pembuatan aplikasi desain suatu benda.
”Toy Story” (1995), merupakan film pertama yang di produksi oleh The Walt Disney Company secara penuh menggunakan teknologi komputer dan ilmu Grafik komputer. Sejak saat itu, mulailah studio animasi digital lain untuk membuat film serupa. diantaranya Blue Sky Studios (Fox), DNA Productions (Paramount Pictures and Warner Bros.), Onation Studios (Paramount Pictures), Sony Pictures Animation (Columbia Pictures) dan DreamWorks.
Kunci pembuatan film-film ini adalah sebuah aplikasi komputer grafis yang disebut computer generated imagery (CGI). Dengan perangkat lunak ini bisa diciptakan gambar 3D lengkap dengan berbagai efek yang dikehendaki. Beberapa software CGI populer antara lain Art of Illusion (bisa di-download di sourceforce.net), Maya, Blender, dan lain-lain.
Salah satu efek CGI dalam film yang kurang dikenal, namun penting, adalah digital grading. Dengan efek ini warna asli hasil shooting direvisi menggunakan perangkat lunak untuk memberikan kesan sesuai dengan skenario. Contohnya wajah Sean Bean (pemeran Boromir) dalam ”The Lord of the Rings: the Two Tower” ketika mati dibuat lebih pucat. Jadi, tidak dengan trik kosmetik, tetapi dengan polesan komputer.
Lantas, bagaimana dengan mimik wajah yang bisa mengekspresikan perasaan haru, sedih, ataupun gembira pada tokoh ciptaan komputer? Dalam pembuatannya, animasi komputer mengkombinasikan vektor grafik dengan pergerakan yang sudah terprogram. Bagian-bagian utama seperti pada wajah, tangan, kaki, dll terdiri dari sejumlah variabel animasi yang akan dikendalikan dengan pemberian nilai tertentu untuk menampilkan ekspresi atau mimik wajah yang dikehendaki.
Sampai saat ini ilmu grafik komputer mengalami perkembangan yang cukup pesat. Sehingga bisa mengahsilkan gambar digital yang mendekati real. Semoga bermanfaat. (http://blog.uin-malang.ac.id/)

Rabu, 21 September 2011

Microsoft Windows XP SP3 Corporate Student Edition September 2011 (ENG / RUS)


Microsoft Windows XP SP3 Corporate Student Edition 
September 2011 (ENG / RUS) | 800MB
Microsoft Windows XP SP3 Corporate Student Edition September 2011 (ENG / RUS) - the so-called "student" version of Windows XP, it is used for educational purposes only and therefore it is designed for multiple installations without further contact with black-list Windows Genuine Advantage . This version of Windows XP SP3 does not require activation and is the official validation of Microsoft. Integrated update in September 2011. This assembly is not really rubbish left by courtesy of the developer with the addition of commonly used applications.
http://www.uploadic.com/6j27tv5whfut
http://www.uploadic.com/bpxw9dif8unh
http://www.uploadic.com/37g0puiwj2n3
http://www.uploadic.com/6sfnk6ivuy3g
OR
http://cramit.in/1i7rl9nnn5fe
http://cramit.in/xzegrr5buhgt
http://cramit.in/w3g659tb14v0
http://cramit.in/hzn56mpzrnhm
INFORMASI :
Features:
• Does not require a key
• Being tested for validity MS
• Patched TCP IP, themes
• Added driver Driverpacks base 10.06
• Added MassStorage 11.09 txt mode (sata + raid)

Posted:
• Framework all in one 2.0 - 4.0
• Internet explorer 8
• Windows media player 11
• Directx 9 Runtimes 9.29.1974 April 2011
• Directx Managed Code 1.1.0
• Flash 11.0.1.129
• Shockwave 11.6.1.629
• Java 7.0.0.147
• Winrar 4.0.1 regged
• Lclock 1.62b
• C + + runtimes 2005 & 2008 & 2010
• Msn.Live.Messenger.9.0.14.0.8117.416 web-setup on desktop

Deleted:
• Music Samples
• Windows Messenger 4.7
• Tour
Deleted folder:
SUPPORT, VALUEADD, DOCS, WIN9XMIG, WIN9XUPG, WINNTUPG

These deletions are not way not affect the stability of the system.
System is fully functional with a minimal set of daily, essential applications.

Updates (patches):
• SFC (windows File Protection) Disabled
• Numlock off default
• Classic control panel Enabled
• updated windows hotfixes till September 7th 2011
• updated MassStorage 11.09


System:
• RAM: 128 MB RAM or higher
• Processor: Intel Pentium / Celeron, AMD K6/Athlon/Duron 300 MHz or higher
• Video: 800 x 600
• Hard drive: 1.5 GB or higher

Language: English + Russian
File format:. Rar
Platform / OS: x86 (32-bit)
sumber :http://www.nurcellmovies.info/ 

HOT : Windows 8 Developer Preview x86 = 2Gb x64=3.6Gb


 

update direct link
INFORMASI :
siapkan lepi n RAM kamu buat incip-incip Windows 8
sebelum download silahkan klik MORE INFO supaya tau review dr q xixixixi
Download
Ver. x86
http://cramit.in/9d7h50t1uay2
or
http://upfile.in/vt0ue9wdmcnn
or
http://www.uploadic.com/w8xrfln3z9dc
or
DIRECT LINK

Ver. x64
http://www.uploadic.com/432jid14eyit
or
http://cramit.in/4x0skyl1jv74
or
http://upfile.in/qynrcxscgnb0
or
DIRECT LINK
Credit/source From 
sumber : http://www.nurcellmovies.info 

MiniTool Power Data Recovery 6.6.0.0


MiniTool Power Data Recovery 6.6.0.0 | 5.76 MB
Power Data Recovery is a read-only File Recovery Software and Data Recovery Software. Power data recovery software could help you recover all your data no matter the data is lost by accidental deletion, format, re-partition, system crash or virus attack.
http://upfile.in/fqfy4v32uv34
OR
http://cramit.in/4ijme8qrup8c
INFORMASI :
Feature overview
• Recover data after accidental deletion
• Recover data after an accidental format
• Recover data from an inaccessible volume (logical drive)
• Recover data after FAT corruption
• Recover data after repartition (fdisk)
• Recover data from a crashed physical device
• Recover data after an MBR corruption
• Recover data from a hard disk drive, camera card, USB drive, Zip, floppy disk
• Recover data for any error except physical damage

Key Features
• Supports FAT 12/16/32
• Supports NTFS
• Supports NTFS compressed and encrypted files
• Supports Dynamic Volume including Simple Volume, Spanned Volume, Stripe Volume, Mirror Volume and Raid Volume.
• Supports RAW data recovery
• Built-in preview function
• Built-in resume recovery function
• Built-in Recovery Wizard

AVG AntiVirus Free 2012 12.0 Build 1808a4492

INFORMASI :With this free distribution version of the
popular AVG Anti-Virus system,you will get a reliable
tool for your computer protection against computer
viruses.
Download AVG AntiVirus Free 2012 12.0 Build 1808a4492
sumber : http://www.nurcellmovies.info/ 

Membuat Koneksi Java ke MySQL

Membuat koneksi di Java sebenernya sangat generic. yang perlu diingat adalah, connection string dan driver untuk koneksi.

Jadi, jika kita ingin membuat koneksi ke MySQL dari Java, maka siapkan :
1. Connection string --> jdbc:mysql://localhost/nama_database/
2. driver MySQL

Sedangkan, langkah - langkahnya adalah :

1. cek apakah driver di temukan. Nama driver : com.mysql.jdbc.Driver
2. buat koneksinya

Ok. sekarang kodenya


import java.sql.*;
import com.mysql.jdbc.Driver;

public static void main (String args[]){
String cs = "jdbc:mysql://localhost/nama_database";
String user = "user";
String password = "password";

Connection cn = null;
try{
Class.forName("com.mysql.jdbc.Driver");

//buat koneksinya
cn = ConnectionManager.getConnection(cs,user,password);
}catch(ClassNotFoundException cnfe){
//class tidak ditemukan
cnfe.printStackTrace();
}


}


Ok. Bila berhasil tanpa error, berarti anda telah berhasil membuat sambungan ke Java selanjutnya adalah bagaimana membuat recordset. berikut ini lanjutan kodenya




import java.sql.*;
import com.mysql.jdbc.Driver;

public static void main (String args[]){
String cs = "jdbc:mysql://localhost/nama_database";
String user = "user";
String password = "password";

Connection cn = null;

try{
Class.forName("com.mysql.jdbc.Driver");

try{

//buat koneksinya
cn = ConnectionManager.getConnection(cs,user,password);

// buat statement
Statement stm = cn.createStatement();


//buat resultset
ResultSet rs = stm.executeQuery("select * from nama_tabel");

}catch(SQLException sqle){
sqle.printStackTrace();
}
}catch(ClassNotFoundException cnfe){
//class tidak ditemukan
cnfe.printStackTrace();
}



http://www.kuliahpemrograman.co.cc/2009/07/membuat-koneksi-java-ke-mysql.html

Belajar SQL dengan MySQL : keyword select


Persiapan
Create database
  1. siapkan database dengan nama lat1
  2. buat sebuah tabel dengan nama customer dengan field : nama varchar(50),alamat varchar(50),telpon varchar(35),fax varchar(35),email varchar(35),contact varchar(35).
  3. Isi tabel tersebut dengan 10 records.
create table step 1.
create table step 2. Klik save untuk membuat table.
Insert Data. Setelah Membuat table, maka akan ada menu insert.
Ini adalah tampilan setelah menu insert di klik. Klik Go untuk menyimpan/menjalankan query



Contoh Kasus :
1. cari customer dengan nama seperti "sarana"
2. cari customer dengan alamat seperti "jakarta"
3. cari customer yang memiliki email
4. cari customer yang memiliki telpon
5. cari customer yang memiliki email,telpon dan fax
6. hitung jumlah seluruh customer
7. hitung jumlah customer yang alamatnya seperti "jakarta"

Jawaban :
1. select * from customer where nama like '%sarana%'
2. select * from customer where alamat like '%jakarta%'
3. select * from customer where email is not null
4. select * from customer where telpon is not null
5. select * from customer where email is not null and telpon is not null and fax is not null

6. select count(*) from customer

7. select count(*) from customer where alamat like '%jakarta%'
Cara menjalankan perintah sql.
klik tab sql, lalu ketik perintah di textarea, lalu klik Go


Penjelasan

Select memiliki struktur : select [field|*] from table [where conditions]
dimana:
  • [field|*] = nama - nama field/kolom dari table atau * sebagai kata ganti semua field. jika menyebutkan field , gunakan tanda koma (,) sebagai pemisah nama - nama field.
  • [where conditions] = kondisi ini optional, artinya boleh digunakan dan boleh juga tidak. kondisi ini berfungsi sebagai filter terhadap data yang dihasilkan. contoh - contoh kondisi akan di tulis dalam artikel terpisah. Contoh kecil kondisi dapat dilihat di contoh diatas.
  • table = diganti dengan nama tabel yang ada di database.

Tips
  • Pemahaman perintah SQL membantu dalam menangani pemecahan masalah dalam aplikasi
  • Untuk Debugging aplikasi yang berkaitan dengan data, selalu cek query dengan menggunakan tools phpmyadmin ini.
http://www.kuliahpemrograman.co.cc/search/label/sql%20tutorial

ASP:Menggunakan Custom Server Object - Bagian 3 - Menggunakan Pustaka Custom pada aplikasi VB dan ASP


Setelah kita berhasil membuat dan mendaftarkan pustaka custom kedalam ssystem register windows. Kita akan coba memanfaatkan pustaka custom tersebut kedalam aplikasi VB6. Berikut ini langkah - langkahnya

1. New Project ->Standar Exe
2. Project References->KuliahPemrograman
Karena pustaka telah terdaftar, maka pada saat penambahan referensi kita dapat menemukan
pustaka tersebut didalam pustaka yang dapat kita gunakan. Check pada pustaka tersebut





3. Tulis Kodenya.
Berikut ini contoh kode sederhana untuk menggunakan




Private Sub Command1_Click()


Dim x As KuliahPemrograman.BangunRuang
Set x = New KuliahPemrograman.BangunRuang

MsgBox x.luasPersegiPanjang(10, 15)


End Sub


4. Jalankan


5. Menggunakan custom lib di asp




'contoh kode aspnya
Dim x
Set x = Server.CreateObject("KuliahPemrograman.BangunRuang")

response.write(x.luasPersegiPanjang(10, 15))
http://www.kuliahpemrograman.co.cc/2009/10/aspmenggunakan-customer-server-object_4967.html

Mengenal Variabel Array di PHP

Setelah jelas tentang apa itu variabel dan cara penulisannya, kita beralih untuk mempelajari array. Array adalah sekelompok variabel yang terekat dalam satu nama. Di PHP , sebuah array dapat berisi type data yang berbeda - beda, ini karena sifat PHP yang dinamis.Mengapa kita membutuhkan array ?
Array kita butuhkan untuk menyimpan data - data yang bersifat berkelompok, misal : nama bulan , nama hari, nama kelas dsb. Data - data yang bersifat berkelompok tentu saya bersifat seperti table dalam sebuah database.Nah, array memang digunakan sebagai tempat transfer antara database dan aplikasi/kode program. Lebih jelas tentang array sebagai sarana transfer data kita bahas kemudian.
Contoh Pembuatan Array

$hari = array("minggu","Senin","Selasa","Rabu","Kamis","Jumat");
$bulan = array("Januari","Februari","Maret");
//contoh penulisan dengan menyebutkan index array
$bulan[3]="April";

Perhatian : Index array pada PHP selalu dimulai dari 0, sehingga apabila anda
perhatikan kode diatas $bulan[3] saya set bernilai "April".
Contoh Pengecekan Isi Array
Untuk mengecek apakah array memang mempunyai isi , bisa dicek dengan cara :
count($arrayku); // ini mengecek jumlah element didalam array
print_r($array); //ini memprint out isi array , sehingga kita bisa melihat apakah data dalam array sudah benar.
http://www.kuliahpemrograman.co.cc/search/label/array%20di%20php

OpenGL

The success of GL lead to OpenGL (1992), a platform-independent API that was
Easy to use
Close enough to the hardware to get excellent performance
Focus on rendering
Omitted windowing and input to avoid window system dependencies

Alur Proses Grafik Komputer 3D (1/2)

• Penetapan ruang model.
• Transformasi model adalah menempatkan model
pada sistem koordinat umum yang disebut ruang dunia (world space).
• Semua objek, sumber cahaya dan sudut pandang pengamat, berada pada ruang dunia.
• Penolakan dilakukan terhadap bagian-bagian yang tidak perlu dalam upaya optimisasi.
• Cahaya menyebabkan suatu objek dapat terlihat
• Warna objek ditentukan dari properti material objek itu sendiri dan sumber cahaya pada tampilan tersebut.
• Algoritma Illuminasi tergantung pada model bayangan (shading model) dan model permukaan (surface model).
• Transformasi pengamatan adalah bentuk lain dari koordinat sistem
• Memetakan titik-titik yang ada pada ruang dunia ke ruang mata
• Posisi pengamat ditransformasikan ke asalnya
• Arah pengamatan diorientasikan sepanjang axis
• Mendefinisikan pengamtan volume.




Pemodelan Geometris

• Transformasi dari suatu konsep (atau suatu
  benda nyata) ke suatu model geometris yang bisa
  ditampilkan pada suatu komputer :
   –  Shape/bentuk
   –  Posisi
   –  Orientasi (cara pandang)
   –  Surface Properties / Ciri-ciri Permukaan (warna,
      tekstur)
   – Volumetric Properties / Ciri-ciri volumetric
      (ketebalan/pejal, penyebaran cahaya)
   – Lights/cahaya (tingkat terang, jenis warna)
   – Dan lain-lain ...

PEMANFAATAN GRAFIK KOMPUTER

PEMANFAATAN GRAFIK KOMPUTER PADA FILM DENGAN CGI DAN HANDPHONE NOKIA
A. Grafik Komputer Pada Film CGI
Penguasaan atas program grafis seperfi Corel Draw, Photoshop, Freehand dan lain-lain memang identik dengan proses pembuatan iklan yang sarat dengan gambar. Bahkan apabila disangkutkan dengan industri perfilman Hollywood, seorang desainer grafis memiliki potensi yang sangat besar untuk berapresiasi sebagai pengemas efek dan segala tetek bengek berbau animasi.
Namun sesungguhnya terlalu sederhana untuk menilai mudahnya membuat iklan hanya berbekal program grafis, meski dengan kemampuan superpower sekalipun! Iklan yang baik tidak dapat dilihat dari bagus atau tidaknya bentuk visual, tidak juga dapat dilihat dari kata-kata yang memorable, atau tidak bisa hanya berdasarkan laris atau tidaknya produk di pasaran.
Menilik film Final Fantasy, apa jadinya jika dibuat dalam versi film pada umumnya? Cerita yang tidak memiliki kekuatan story telling tentulah ambruk menjadi film kelas B. Beruntung film ini dibuat murni oleh kemampuan grafik yang kemudian mendongkrak proyek animasi naik sampai langit ke tujuh sebagai sesuatu yang menakjubkan dan menjadi bahan perbincangan banyak orang.
Padahal penguasaan program yang sama sanggup membuat film Finding Nemo begitu manusiawi, sebelumnya film Monster Inc pun memiliki pola bertutur sangat simpatik. Minimnya nuansa futuristik dengan gaya star wars serta penilaian yang berorientasi pada tema anak-anak agaknya membuat film tersebut kehilangan aura komputer grafik untuk menjadi topik pembicaraan, terapi plot yang kuat dan kemampuan luar biasa untuk menghidupkan karakter cerita dalam kemasan teknologi sanggup menjadikannya sebagai film yang mampu “berbicara” kepada penontonnya.
Pernah, dalam waktu bersamaan Walt Disney dan Dreamworks membuat fabel berbasis animasi melalui film Bugs Life dan Antz, dalam konteks dasar visual yang sama ternyata Dreamworks harus mengakui kepiawaian Walt Disney dalam strategi pembuatan film keluarga dengan menerima kekecewaan bahwa Antz jeblok di pasaran, meski berlatar nama besar Steven Spielberg dan melibatkan Sharon Stone juga Sylvester Stallone sebagai pengisi suara.
CGI
Tentu tak sedikit dari kita yang mempertanyakan dengan teknologi apa dan bagaimana film-film kreatif ini dibuat. Ternyata, kunci pembuatan film-film ini adalah sebuah aplikasi komputer grafis yang disebut computer generated imagery (CGI). Dengan perangkat lunak ini bisa diciptakan gambar 3D lengkap dengan berbagai efek yang dikehendaki. Beberapa software CGI populer antara lain Art of Illusion (bisa di-download di sourceforce.net), Maya, Blender, dan lain-lain.
CGI merupakan tehnik penerapan teknologi komputer grafik untuk pembuatan efek kusus (special effect) dalam film. Perangkat lunak (software/program) komputer yang biasanya digunakan dalam penerapan CGI antara lain 3ds Max, Blender, Light Wafe 3D, Maya, dan Autodesk Softimage.
Computer-Generated Imagery (CGI; bahasa Indonesia: “pencitraan yang dihasilkan komputer”) adalah penggunaan grafik komputer (atau lebih tepatnya, grafik komputer 3D) dalam efek spesial. CGI digunakan dalam film, acara televisi dan iklan, dan juga media cetak. Permainan video umumnya menggunakan grafik komputer waktu-nyata (jarang disebut sebagai CGI), namun juga sering menggunakan “adegan tengah” (cutscene) yang telah dirender dan film-film pembuka yang mirip dengan penggunaan CGI. Ini dinamakan Full Motion Video (FMV).
Kebut-kebutan di dunia animasi semakin sengit saja. Persaingan itu tidak hanya di era 3D sekarang. Namun, di era animasi 2D dulu pun juga terjadi persaingan secara ketat. Topik ini sangat menarik untuk diperbincangkan. Kita tahu bahwa sesuatu rangkaian gambar dengan memanfaatkan teknik animasi sehingga menghasilkan sesuatu yang terlihat hidup dan bergerak disebut dengan animasi. Masih banyak pengertian animasi yang dapat kita ketahui. Dunia film animasi yang akan saya bicarakan disini adalah animasi-animasi dalam bentuk kartun.
Kita ketahui bahwa animasi tidak akan jauh-jauh dari Disney. Animasi pertama kali dihasilkan pada tahun 1901 dan diciptakan oleh seorang lelaki bernama Walter Disney. Ia mendirikan sebuah perusahaan yang kian lama semakin merajai dunia kartun. Perusahaan yang menjadi “rajanya animasi”, Walt Disney. Sudah ratusan film kartun yang sudah diciptakan oleh perusahaan besar ini. Akibatnya, terbentuk suatu pikiran di masyarakat, jika kita ngomongin film kartun maka kita ngomongin Disney.
Animasi 2D terus dikonsumsi oleh para animator-animator dunia. Selain Disney, perusahaan lain yang menggunakan animasi 2D adalah Nickelodeon. Nickelodeon menciptakan beberapa film-film kartun, salah satu yang menjadi icon juga adalah SpongeBob Square Pants. Masih banyak perusahaan-perusahaan lain yang mengikuti jejak Walt Disney dalam menciptakan film-film kartun berbasis 2D. Kita ketahui, teknologi selalu berjalan maju ke depan. Teknik animasi berbasis 2D pun mempunyai saingan, yakni teknik animasi dengan basis 3D. Film-film animasi dengan 3D mempunyai keunggulan yang lebih dibandingkan dengan 2D. Teknik modern ini menjadikan film-film animasi kartun lebih real, bernyawa dan lebih hidup tentunya. Dengan bantuan teknologi CGI (Computer Generated Imagery), film-film kartun terlihat lebih bernyawa dan nyata.
Kita semua pastinya pernah menyaksikan film-film photo realistic animation yang mendorong kita untuk membayangkan bagaimana cara membuatnya. Adegan air laut terbelah dan membentuk gelombang setinggi menara tertinggi di dunia. akibat tumburan meteor sebesar kota New York dan siap menyelimuti kota terbesar di dunia dan merobohkan gedung-gedung pencakar langit dalam film Deep Impact yang begitu realistis membuat kita bertanya-tanya bagaimana proses pembuatannya? Begitu juga dengan adegan kota yang tertutup badai salju dalam film The Day After Tomorrow. Ada yang menebak dibuat miniatur kecil yang semirip mungkin dengan aslinya kemudian disiram dengan air sehingga terlihat seperti adegan-adegan spektakuler itu. Adalah teknologi komputer grafis yang membantu berbagai macam hal yang terlalu mahal dan tak mungkin untuk dibuat dalam film, iklan, dan video games menjadi nyata. Teknologi visual effect pada berbagai macam software 3 dimensi dan software-software pendukung lainnya yang membuat kita terhenyak ketika menyaksikan adegan seolah-olah bumi mengalami kiamat. Mungkin anda mulai berpikir apa hubungannya hal-hal semacam itu dengan fotografi? Di negara-negara barat teknologi canggih atau yang kini sering disebut dengan CGI mulai diaplikasikan pada bidang fotografi. Berbagai obyek yang terlalu sulit atau mahal dibuat dengan fotografi diciptakan melalui CGI.
CGI atau yang disebut juga Computer-generated imagery adalah sebuah visual-visual baik berbentuk still foto maupun film/ iklan/ interactive element dalam website yang diciptakan dengan software-software komputer grafis. Visual-visual yang dihasilkan melalui proses CGI biasanya mengedepankan unsur photo-realistic atau kemiripan dengan aslinya. (Computer-Generated Imagery). Teknologi CGI ini membuat gambar yang dihasilkan lebih bagus dan terlihat seperti nyata. Glen Taylor, pendiri sekaligus direktur operasional Taylor James, sebuah perusahaan CGI yang berdomisili di Inggris mengatakan bahwa kini kita bisa menjumpai banyak gambar yang dihasilkan dengan CGI, baik sebagian ataupun secara keseluruhan. Mulai dari film animasi, video & computer game, special effects pada film & iklan TV, konten interaktif pada website dan dalam pembuatan sebuah visual fotografi.
ketika menggunakan fotografi dalam membuat sebuah visual, maka obyek yang didapatkan adalah apa adanya. Ketika kita menginginkan sedikit perubahan dan penyesuaian maka diperlukan pemotretan ulang. Gley Taylor dari Taylor James (pembuat CGI pertama) memberi contoh sebuah project Motorola yang mereka kerjakan, project tersebut berawal dari hanya image untuk iklan cetak.
Berikut ini adalah film film sukses yang menggunakan teknologi CGI
1. Dragonheart
2. The Cloverfield Monster – Cloverfield
3. Davy Jones – Pirates of the Carribbean 2 & 3
4. Transformers
5. Jurassic Park and Sequels
6. Terminator 2: Judgment Day
7. King Kong
8. Lord of the Rings Trilogy
9. Avatar
Terlepas suka atau tidak suka dengan “Avatar”, film ini telah menjadi kunci dimulainya teknologi inovatif. Dengan revolusi 3D yang modifikasi peralatannya ia rancang sendiri, Cameron telah memberikan kontribusi akan harapan masa depan film.
Ke depannya, jika sepakat teknologi 3D adalah sebuah standar format yang harus ada, problem pembajakan bisa diminimalkan mengingat teknologi 3D tak bisa dihadirkan secara murah di ruang teater rumah.
B.Intel dan Dream Handphone Nokia: 3-D Grafik pada Smartphone
Ingat adegan dalam film Star Wars pertama ketika Luke Skywalker’s sengaja menemukan pesan holografik Princess Leia kepada Obi-Wan Kenobi meminta bantuannya? Itu hanya salah satu daerah untuk penelitian bahwa Intel ( INTC ) dan Nokia ( NOK ) ingin mengejar melalui upaya bersama mengumumkan Senin.
Raksasa chip adalah menyiapkan sebuah laboratorium di Pusat untuk Internet Excellence di University of Oulu di Finlandia untuk mengeksplorasi teknologi 3-D, yang sudah sangat populer di game dan muncul lagi di film. Intel dan Nokia percaya bahwa konsumen akan ingin hidup pencitraan yang sama dan pengalaman interaktif saat menggunakan handset mereka, yang menjadi komputer kecil yang kuat yang melakukan lebih dari sekedar membuat panggilan telepon.
Penelitian Komplemen Kemitraan Baru
Upaya penelitian akan bertujuan untuk mengambil keuntungan dari kegemaran konsumen meningkat menjadi terhubung dan berinteraksi satu sama lain melalui jejaring sosial dan situs online media lainnya, khususnya dengan menggunakan telepon seluler, kata Martin Curley, direktur dari Intel Labs Eropa, selama panggilan konferensi.
“Ada kesempatan untuk pusat inovasi bersama untuk membentuk ini, dalam hal sintesis dunia virtual dan fisik dan layanan berbasis lokasi,” kata Curley.
Kerja dari laboratorium baru akan melengkapi kemitraan Intel dan Nokia mengumumkan pada bulan Februari tahun ini untuk mengembangkan bagian yang berbeda dari perangkat lunak untuk meningkatkan fitur komunikasi dan multimedia di komputer, laptop, TV dan sistem hiburan bahkan di dalam mobil, Curley ditambahkan.
Frustrasi di Arena Mobile
Intel dalam bisnis pembuatan chip yang paling sering ditemukan pada komputer, dari server ke laptop. Perusahaan California telah mencoba selama bertahun-tahun untuk mengatasi pasar telepon seluler, walaupun sering tanpa keberhasilan.
Untuk mendorong chip ke dalam komputer baru dan alat komunikasi, Intel telah berinvestasi di perusahaan startup dan upaya riset untuk menciptakan hardware dan software untuk komputer dan elektronik konsumen lainnya. Perusahaan membeli Wind River Systems , pengembang sistem operasi untuk handset dan perangkat lainnya, untuk $ 884.000.000 tahun lalu. Intel dilaporkan sedang berbicara dengan Infineon Technologies ( IFNNY ) untuk membeli bisnis mobile chip, menurut The Wall Street Journal.
Intel telah ingin mempromosikan prosesor Atom sebagai otak menyalakan ponsel, tetapi Curley mengatakan bahwa bukan tujuan spesifik untuk upaya penelitian terbaru perusahaan dengan Nokia.
3-D Inovasi
Meski Nokia adalah penjual handset berkuasa secara global, telah kehilangan beberapa pangsa pasar untuk perusahaan seperti Apple ( AAPL ) pada kuartal kedua tahun ini. tumbuh pengaruh Apple di ponsel telah mendorong pesaing seperti Research in Motion ( RIMM ) untuk meningkatkan pengembangan usaha mereka dan menawarkan handset dengan aplikasi yang lebih untuk menjelajah Internet dan mengelola media sosial.
Meskipun akan dingin untuk melihat hologram 3-D dari orang yang Anda chatting dengan, jangan mengandalkan bahwa teknologi mewujudkan dalam waktu dekat. Jenis proyeksi holografik akan sulit untuk dikembangkan untuk handset, untuk satu, dan fitur 3-D lain mungkin lebih menarik untuk konsumen dalam waktu dekat, kata Heikki Huomo, direktur Pusat untuk Internet Keunggulan di Universitas Oulu.
Dalam waktu dekat, teknologi yang lebih mungkin dari laboratorium baru akan memungkinkan konsumen mendapatkan pengalaman yang sama grafis 3-D di game dan film yang membawa dunia maya untuk hidup, kecuali mereka akan mendapatkannya dari ponsel mereka, mungkin melalui fitur layar sentuh. Intel dan Nokia tidak bersedia mengatakan kapan konsumen akan melihat produk pertama menggunakan penelitian dari laboratorium yang baru, namun.
Akan Konsumen Buka Dompet mereka?
Apakah konsumen akan merangkul fitur 3-D pada handset dengan membayar bagi mereka tidak terjamin. Untuk satu, banyak di dunia komputer pikir software seperti Second Life, yang memungkinkan konsumen untuk membuat virtual mereka sendiri, dunia 3-D karakter, masyarakat dan perdagangan, akan menjadi banyak digunakan. Tapi itu belum terjadi.
Curley mengatakan Second Life menerima terlalu banyak hype. “Seperti halnya teknologi baru dan pengalaman, awalnya hyped melampaui apa yang bisa disampaikan,” katanya.
Huomo menambahkan bahwa kemajuan dalam teknologi telepon mobile sehingga memungkinkan untuk mendukung grafis 3-D, jadi waktunya yang tepat untuk mulai mengembangkan perangkat lunak yang akan memproduksi, gambar kaya yang hidup.
C.GRAFIK KOMPUTER PENCAHAYAAN
Model dari pencahayaan, dipakai untuk menghitung intensitas dari cahaya yang terlihat dari setiap posisi pada setiap permukaan benda yang terlihat oleh kamera. Ketika melihat sebuah benda, terlihat cahaya yang dipantulkan dari permukaan benda, dimana cahaya ini merupakan intregrasi dari sumber-sumber cahaya serta cahaya yang berasal dari pantulan cahaya permukaan-permukaan yang lain. Karena itu benda-benda yang tidak langsung menerima cahaya dari sumber cahaya, masih mungkin terlihat bila menerima cahaya pantulan yang cukup dari benda didekatnya.
Model sederhana dari sumber cahaya adalah sebuah titik sumber, dimana dari titik ini cahaya dipancarkan. Perhitungan pencahayaan bergantung pada sifat dari permukaan yang terkena cahaya, kondisi dari cahaya latar serta spesifikasi sumber cahaya.
Tanpa adanya cahaya kita bagai berada di ruang yang gelap gulita tanpa dapat melihat apapun juga. Apa yang kita lihat pada benda adalah akibat dari pantulan cahaya ke benda tersebut yang kita tangkap dengan mata.
SIFAT DASAR CAHAYA
1. Cahaya dapat menembus
Cahaya dapat menembus bahan-bahan yang tidak padat seperti kain, kertas kalkir dan kaca sehingga kualitas kerasnya cahaya dapat dibuat lunak atau soft.
2. Cahaya dapat difokuskan
Cahaya dapat kita salurkan kearah mana kita kehendaki, dia dapat dikumpulkan dan difokuskan agar kuantitasnya lebih besar lagi. Sebagai contoh adalah sinar Matahari yang difokuskan oleh surya kanta atau kaca pembesar.
3. Cahaya dapat dipantulkan
Cahaya itu dapat pula kita belokan atau kita pantulkan dengan benda yang mempunya daya pantul yang tinggi seperti cermin, styrofoam, kertas perak dll yang lazim kita sebut dengan reflektor untuk menyinari bagian-bagian yang gelap.
4. Cahaya mempunyai warna
Semua sumber cahaya mempunyai warna atau umumnya kita sebut dengan suhu warna dalam hitungan derajat Kelvin dan dapat diukur dengan Kelvin Meter / Color Meter.
Semua sumber cahaya dimodelkan sebagai sumber titik yang dispesifikasikan dengan:
_ Lokasi: Lokasi (x,y,z) dari sebuah sumber cahaya akan menentukan pengaruhnya terhadap sebuah objek.
_ Intensitas: Intensitas cahaya menyatakan kekuatan cahaya yang dipancarkan oleh sebuah sumber cahaya. Parameter ini merupakan angka, yang biasanya makin besar nilainya, makin terang sumber cahaya tersebut.
_ Warna: Warna cahaya dari sumber ini akan mempengaruhi warna dari sebuah objek, jadi selain warna objek tersebut warna cahaya yang jatuh pada objek tersebut akan mempengaruhi warna pada rendering. Warna cahaya ini biasanya terdiri dari 3 warna dasar grafika komputer, yaitu: merah, hijau, biru atau lebih dikenal dengan RGB.
Ambient Light
cahaya latar/alam. Cahaya ini diterima dengan intensitas yang sama oleh
setiap permukaan pada benda. Cahaya latar tersebut dimodelkan
mengikuti apa yang terjadi di alam, diaman dalam keadaan tanpa sumber
cahaya sekalipun, benda masih dapat dilihat.
Model pencahayaan menggunakan Lambert’s Law adalah gabungan diffuse
scattering dan ambient, dan dituliskan:
Color Surface :
Color Reflection :
cos
} ) 0 , MAX(cos {
s
L
a d s L
C
C
k k C C
N L• =
+ =
α
α
Fungsi pencahayaan dengan Lambert’s Law dapat dituliskan dengan:
color_t LambertLaw(vector3D_t Light, vector3D_t Normal, vector3D_t
View, color_t col) {
// diffuse reflection coefficient
float kdif=0.6;
// ambient light coefficient
float kamb=0.4;
float tmp,NL,RV;
color_t ColWhite={1,1,1};
vector3D_t ReflectionVector=(2.*(Light*Normal)*Normal)-Light;
tmp=Normal*Light;
NL=funcPositive(tmp);
tmp=ReflectionVector*View;
RV=funcPositive(tmp);
return kdif*NL*col+kamb*col;
Phong Model
Model pencahayaan Phong Model adalah model pencahayaan yang lengkap karena merupakan gabungan dari diffuse scattering, specular reflection dan ambient. Rumus dari Phong Model dituliskan dengan:
(white) Color Specular :
Color Surface :
Color Reflection :
) ( 2
cos
cos
) 0 , (cos MAX } ) 0 , MAX(cos {
white
s
L
n
sp white a d s L
C
C
C
k C k k C C
L N L N R
V R
N L
. • =
• =
• =
+ + =
β
α
β α
Fungsi pencahayaan dengan Phong Model dapat dituliskan dengan:
color_t PhongModel(vector3D_t Light,vector3D_t Normal, vector3D_t
View, color_t col) {
// specular reflection coefficient
float kspe=0.7;
// diffuse reflection coefficient
float kdif=0.6;
// ambient light coefficient
float kamb=0.4;
float tmp,NL,RV;
color_t ColWhite={1,1,1};
vector3D_t ReflectionVector=(2.*(Light*Normal)*Normal)-Light;
tmp=Normal*Light;
NL=funcPositive(tmp);
tmp=ReflectionVector*View;
RV=funcPositive(tmp);
return kdif*NL*col+kspe*power(RV,4)*ColWhite+kamb*col;
}
D. GRAFIK KOMPUTER DAN PENGOLAHAN CITRA PADA FILM “THE SIMPS”
Grafik Komputer merupakan cabang dari ilmu computer yang berkonsentrasi kepada pengolahan gambar atau manipulasi gambar secara digital. Grafik computer berawal dari bentuk yang sederhana yaitu 2D. Saat ini teknologi semakin maju, bentuk sederhana dari grafik computer, yaitu 2D berubah menjadi 3D. Ilmu grafik computer ini sangat berguna untuk memvisualisasikan benda-benda yang nyata menjadi benda grafis. Bahasa yang lebih mudahnya yaitu menggambarkan benda nyata dalam bentuk tiruan grafis, seolah-olah gambar itu ada dan nyata.
Untuk membuat suatu grafik computer yang baik, diperlukan keahlian-keahlian khusus meliputi ilmu geometri ( menggambar permukaan bidang), animasi (menggambar dan memanipulasi suatu gerak), rendering (algoritma untuk menampilkan afek), dan citra (pengambilan atau penyunting gambar). Suatu contoh, untuk membuat sebuah karakter tokoh manusia, seorang grafik computer memerlukan desain manusia secara virtual, bagaimana bentuk badannya, anggota tubuhnya, wajah serta hal-hal yang detail, sehingga gambar tersebut mendekati seperti aslinya. Setelah itu menentukan animasi gerak, seperti raut muka dan mimik muka.
Salah satu cabang ilmu dari grafik computer adalah pengolahan citra. Yaitu mengolah dan memanipulasi suatu citra. Pengolahan citra merupakan tahap berikutnya dalam pembuatan suatu grafik computer. Keduanya saling keterkaitan, karena suatu grafik computer diinterpretasikan oleh manusia apabila suatu informasi yang dibuat sampai ke manusia tersebut dan pengolahan citra sebagai pelengkap atau penyempurna suatu grafik computer. Pengolahan citra secara digital merupakan perbaikan suatu citra menggunakan computer sehingga suatu citra (image) dapat dipahami oleh manusia yang melihat.
Dalam proses pengolahan citra diperlukan suatu pengenalan pola, bertujuan untuk mengenali objek-objek yang terdapat suatu citra dapat mengambil informasi yang terdapat di citra tersebut. Pengolahan citra dan pengenalan pola merupakan suatu keterkaitan, agar suatu citra dapat dimengerti dan dikenali. Data-data yang diproses dalam pengolahan citra dapat diambil menggunakan camera dan handycam dan tidak selalu dalam bentuk data digital. Peningkatan citra sangatlah dibutuhkan, untuk meningkatkan kualitas suatu citra itu sendiri. Dan pengolahan citra selanjutnya adalah segmentasi citra, yaitu memisahkan atau memilih objek-objek dari keseluruhan citra. Dengan mengecikalkan pixel dari suatu citra serta meminamalkan informasi suatu citra agar tidak terlalu berlebihan dan memperhatikan pinggiran suatu citra dengan mengatur ketebalan sehingga mendapatkan hasil yang baik.
Dari bahasan diatas, sudah cukup jelas bagaimana suatu pengolahan citra sangat dibutuhkan sekali dalam grafik computer, agar mendapat hasil yang baik. Suatu contoh pada salah satu permainan berteknologi (Game Technology) terlaris yang diluncurkan oleh Electronic Arts (EA) yaitu THE SIMS 3. The sim 3 ini merupakan implementasi dari suatu grafik computer yang berhasil memuaskan para penggila game dan merupakan salah satu pencetak angka penjualan terbesar di Eropa.
Karakter atau ragam bentuk tokoh (Sims) yang berada pada permainan The Sims ini merupakan suatu contoh virtualisasi bentuk manusia yang sangat sempurna. Pembuatan karakter manusia ini, menggunakan aplikasi grafik computer yang sangatlah baik. Sims (sebutan karakter pada permainan ini) tidak hanya bisa memberikan mimik muka atau raut muka yang bermacam-macam, tetapi bisa melakukan gerakan (animasi) yang beragam seperti melakukan kegiatan manusia sehari-hari secara nyata. Pada permainan ini dapat terlihat jelas detail-detail yang dapat tersampaikan langsung maksud dan arti dari gambar visual ini. Ini merupakan perpaduan grafik computer dan peengolahan citra yang sangat luar biasa.
Selain bentuk grafik yang sangat baik di permainan ini, dari segi system suara juga sangat luar biasa. Setiap kegiatan yang menimbulkan suara pasti dapat didengar jelas oleh pemainnya. Dan dalam permainan the sims 3 ini, terdapat tool Create a World dimana pemain dapam membuat kota-kota yang mereka inginkan. Didalam tool ini juga banyak template yang beragam seperti lembah-lembah, pemandangan sungai, serta para pemain dapat menambahkan kreasi mereka sendiri.
The Sims 3 merupakan salah satu contoh dari banyak permainan yang menggunakan Grafik computer dan pengolahan citra yang sangat baik, dan masih banyak lagi permainan-permainan yang lainnya.
Semoga bermanfat.
Referensi :
http://tips-tipskomputer.blogspot.com/2010/03/grafik-komputer.html
http://www.ittelkom.ac.id/library/index.php?

sumber : http://langitsamoedra.wordpress.com/2010/10/03/pemanfaatan-grafik-komputer/

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More