[Belajar di Universiti] Jatuh dan Bangun

Assalammualaikum,

Tidak ramai atau sangat sedikit yang sanggup menceritakan perihal dirinya semasa di bangku universiti dahulu.

Masing-masing ada ceritanya. Tetapi apa yang saya tahu saya akan kongsikan bersama.

Salah satu perkara yang ada di universiti ada belajar untuk mencapai kejayaan

Apakah sebenarnya kejayaan?

Pelajar A mendapat 4.00 setiap semester dan pada 20 tahun kemudian menjadi jurutera yang berjaya dan usahawan yang berjaya?

Pelajar B mendapat 2.80 pada akhir semesternya (terkumpul) dan 20 tahun kemudian menjadi jurutera yang berjaya serta usahawan yang berjaya

Pelajar C mendapat 3.2 pada akhir semesternya (terkumpul) dan 20 tahun kemudian menjadi jurutera yang berjaya, islamik serta usahawan yang berjaya.

Pelajar D,E, dan seterusnya

Wah, sungguh banyak polanya dan semua ini ada ceritanya tersendiri

Bahkan jangan disangka yang mendapat sekadar 2.3 atau 2.4 pun boleh berjaya jika mereka benar-benar insaf di kemudian hari dan akhirnya menjadi insan Islamik yang bekerjaya di kemudian hari.

Oleh itu, kejayaan adalah berlainan antara setiap insan.

Kita tidak boleh sesekali mengatakan mereka itu tidak berjaya. Sedangkan kita tahu kegagalan itu sebahagian daripada kejayaan

Jika tidak gagal dahulu, seseorang itu mungkin tidak insaf dan akan sentiasa tercorot. Kita mana tahu bukan?

Gagal akan menyebabkan kita kembali aktif untuk berjaya dan mengharungi perit getir kehidupan ini

Berbalik kepada soal pelajaran

Saya secara jujur memberitahu saya dahulu tidak sehebat mana. Tetapi dengan daya semangat keinsafan yang tinggi dan semangat ingin bangkit, saya kembali ke perjuangan dan meneruskan matlamat saya menjadi seorang yang berjaya

Dua tahun pertama saya di universiti semasa Bachelor of Engineering (Computer) di UTM Skudai, adalah tidak menyakinkan keputusannya. Saya mendapat:

Semester I 2003/2004

Semester 2 2003/2004

Semester 1 2004/2005

Semester 2 2004/2005

Apa yang diletakkan itu adalah benar dan sememangnya keputusan peperiksaan saya.

Nasihat saya, jika anda seorang Penasihat Akademik atau pensyarah yang mengajar pelajar-pelajar ini. Saya berpesan kepada diri saya sendiri dan orang lain juga agar jangan memandang rendah kemampuan setiap pelajar itu.

Walaupun mungkin selama 4 semester awal ini keputusan mereka teruk seperti di atas. Awas, Allah Maha Berkuasa atas segala-galanya. Allah S.W.T. mampu memberi hidayah dan petunjuk kepada sesiapa yang dikehendakiNya. Jangan anda berkata bodoh dan terlalu membenci pelajar-pelajar yang mendapat keputusan rendah ini. Sebaliknya:

a) Berinya semangat,

b) Ceritakan kisah-kisah yang mampu membangkitkan semangatnya untuk belajar dan kita juga mohon doa kepada Allah agar diri kita, isteri atau suami, dan anak-anak serta keluarga kita, dan juga rakan-rakan serta pelajar-pelajar dan seluruh umat Islam agar bangkit dan mampu bersaing dari segi ilmu di dunia ini

c) Tunjukkan yang anda tidak langsung memandang rendah kepada mereka bahkan mengalakkan mereka dan memberikan nasihat agar berubah.

Semasa saya di universiti, alhamdulillah saya terdetik dalam hati untuk kembali kepada perjuangan akademik ini. Usaha saya tidak sia-sia. Bukti:-

Semester 1 2005/2006

Semester 2 2005/2006

Semester 1 2006/2007

Semester 2 2006/2007

Oh, ya selepas ini merupakan semester extend saya. Saya failed dua kali Teori Litar dan berjaya mendapatkan B+ pada kali ketiga. Disebabkan itu, subjek saya beranjak sedikit

Semester 1 2007/2008

.

Demikianlah keputusan-keputusan peperiksaan saya semasa belajar di UTM Skudai. Pointer terakhir saya adalah 3.14. Bayangkan dengan keputusan peperiksaan yang rendah iaitu 2.36 (terkumpul) boleh dinaikkan sehingga 3.14.

Selain itu, banyak rakan saya yang lagi berjaya daripada saya. Ada yang sedang mengambil PhD setelah mengambil masternya di Korea. Ada yang sedang bekerja dengan salah sebuah syarikat jurutera di Kuala Lumpur dan sebagainya.

Sedangkan dahulunya ketiga-tiga rakan ini merupakan sahabat tegar yang bermain permainan Online:-

Kami bermain dari lepas isyak ke subuh pada tahun 2003/2004 tersebut dan kemudiannya bermain pula game terbaru iaitu RYL

Itulah kehidupan semasa di awal universiti. Terlalu leka bermain tetapi itulah pengalaman paling best bermain game sehingga subuh.hahahahaha

Kesimpulannya

Kejayaan ini tiada kaitan dengan hobi anda dan apa yang anda sedang buat

Yang penting tetapkan matlamat dan teguhkan iman anda kepada Allah S.W.T.

Semoga anda berjaya !!!!

Berjogging Untuk Kesihatan

Assalammualaikum,

Saya sendiri tidak ingat bila kali terakhir saya menulis artikel berkaitan jogging ini. Tetapi jika diikutkan, ianya mungkin sudah lama dan memerlukan information-information baru.

Apakah sebenarnya yang dimaksudkan dengan berjogging?

Sebelum saya menulis dengan panjangnya, eloklah saya memberitahu terlebih dahulu bahawa penulisan ini adalah sekadar dari pengalaman saya sendiri dan bukannya dari bacaan buku dan sebagainya. Saya banyak mengkaji juga langkah-langkah untuk berjogging dengan berkesan di internet tetapi sekadar tips-tips biasa sahaja. Selebihnya saya terus pakai kasut dan mulakan jogging sekeliling padang atau jalan.

Sebagai permulaan, anda perlukan seorang atau dua atau lebih teman untuk berjogging.

Jika tidak anda mungkin menghadapi masalah dari segi konsistensi.Mengapa?

Kerana jika kita mempunyai rakan yang juga ingin berjogging, maka rakan kita itu juga akan jadi reminder kita.

Jadi kita akan saling ingat mengingati antara satu sama lain.

Tapi yang pasti, amat susah juga mencari rakan yang sama-sama ingin berjogging kerana kelak mungkin anda atau rakan anda yang akan hilang mood untuk berjogging

Seterusnya

Langkah kedua adalah memastikan anda memilih waktu yang tetap. Sebagai contoh, pada dua bulan pertama anda mulakan jogging, anda sekadar berjogging setiap hari sabtu dan ahad sahaja. Maka anda akan pastikan pagi sabtu dan ahad anda akan berjogging tempat yang sama.

Jika anda sibuk, anda perlu gantikan dengan hari bekerja. Tetapkan syarat untuk melatih diri anda. Berjogging ini mendisiplinkan.

Kemudian, anda perlu setkan jarak berapa anda mahu pergi. Sebagai contoh

Dua bulan pertama : 1 km

Dua bulan seterusnya : 1.5 km

Empat bulan seterusnya : 2 km

Empat bulan seterusnya : 3 ~ 4 km

Empat bulan seterusnya : Setiap dua hari, jogging sehari sejauh 3 ~ 4 km

Empat bulan seterusnya : Catatan masa yang lebih mantap untuk 3 ~ 4 km

Empat bulan seterusnya : 8 ~ 12 km

Selebihnya : Maintain sejumlah 60 ~ 80 km setiap bulan dan perbaiki larian

Maka sebenarnya ianya memakan masa 2 ke 3 tahun untuk memastikan anda dapat masuk kategori long distance atau medium distance running session. Maka bolehlah masuk marathon 42 km, 21 km atau 7 km (mana yang anda laju dan sesuai).

Seterusnya

Pastikan anda lengkapkan diri anda dengan gajet terkini untuk berlari/berjogging.

Anda ada iphone/android phone yang boleh digunakan untuk mendownload aps terbaru untuk larian menggunakan GPS.

Anda juga boleh memiliki kasut yang ada sensor dan lain-lain teknologi.

Ini menjadikan kegiatan berjogging anda menarik dan interaktif. Bahkan sentiasa berjogging sewaktu ramai orang (pada waktu pagi) kerana ini menaikkan semangat anda untuk bersaing jika berjogging seorang diri (tiada orang menemani)

Seterusnya

Pastikan anda menjaga pemakanan anda dan kesihatan anda. janganlah pula anda melantak selepas anda berjogging.

Itu sahaja setakat ini, sekadar tulisan am untuk anda menikmati hidup anda dengan berjogging.

Percayalah, berjogging amat menarik.

Pembinaan Ruangan Lingkup Tertutup (Bounding-Volume) dalam Computer Graphics Menggunakan OpenGL dan Visual C++

Assalammualaikum.

Setelah kita tahu serba sedikit mengenai objek-objek dalam persekitaran 1D,2D dan 3D. Dan kita juga telah mengetahui kaedah untuk loading data .obj.

Maka seterusnya kita akan menggunakan data-data yang ada untuk mewujudkan Bounding-Volume bagi objek yang kompleks.

Tujuaannya adalah untuk memudahkan tugas pengesanan pelanggaran sesama objek.

Sebelum ini. Kita perlu mengetahui beberapa perkara iaitu:-

a) Jumlah Vertex

b) Setiap titik vertex tersebut (X,Y,Z)

c) Kita menyimpan Jumlah Vertex dalam variable integer type. Dan titik vertex saya simpan dalam vector array supaya memudahkan saya

Bagaimana hendak declare vector array?

Oleh sebab saya jenis menggunakan struct untuk declare vector tersebut

#include <vector>
using namespace std;

typedef struct
{
    float x;
    float y;
    float z;
}vectorf;

typedef struct
{
    int x;
    int y;
    int z;

}vectori;

Seterusnya, saya memanggil header file yang mengandungi kedua-dua struct ini untuk digunakan dalam function pembinaan AABB ini.

vectorf minPoint,maxPoint;
vector<vectori> TPointTest;

Terdapat beza antara kedua dua ini. minPoint dan maxPoint hanya single vector sahaja manakala TPointTest tersebut merupakan vector yang boleh menyimpan lebih dari single vector

Seterusnya ada langkah-langkah yang perlu diikuti untuk mencari titik maksimum dan minimum bagi sesebuah objek

Step Pertama : Calculate Min Max

void cAABB::AABBCalculateMinMax(cAABB *tAB, cObjConf *sourceObj)
{
//initialize
vectorf aabbmin,aabbmax;

aabbmin.x = 0;
aabbmin.y = 0;
aabbmin.z = 0;
aabbmax.x = 0;
aabbmax.y = 0;
aabbmax.z = 0;

for(int i=0; i<sourceObj->T_Vertex; i++)
{
//min x
if(aabbmin.x > sourceObj->Vertex[i].x)
{
aabbmin.x = sourceObj->Vertex[i].x;
}
//min y
if(aabbmin.y > sourceObj->Vertex[i].y)
{
aabbmin.y = sourceObj->Vertex[i].y;
}
//min z
if(aabbmin.z > sourceObj->Vertex[i].z)
{
aabbmin.z = sourceObj->Vertex[i].z;
}
//max x
if(aabbmax.x < sourceObj->Vertex[i].x)
{
aabbmax.x = sourceObj->Vertex[i].x;
}
//max y
if(aabbmax.y < sourceObj->Vertex[i].y)
{
aabbmax.y = sourceObj->Vertex[i].y;
}
//max z
if(aabbmax.z < sourceObj->Vertex[i].z)
{
aabbmax.z = sourceObj->Vertex[i].z;
}
}

tAB->minPoint.x = aabbmin.x;
tAB->minPoint.y = aabbmin.y;
tAB->minPoint.z = aabbmin.z;
tAB->maxPoint.x = aabbmax.x;
tAB->maxPoint.y = aabbmax.y;
tAB->maxPoint.z = aabbmax.z;
}

– Saya memperkenalkan dua class iaitu satu untuk cAABB dan satu lagi merupakan class bagi object file iaitu cObjConf.

– sourceObj->T_Vertex merujuk kepada jumlah vertex bagi objek tersebut

– sourceObj->Vertex[i].x, sourceObj->Vertex[i].y, dan sourceObj->Vertex[i].z merupakan titik vertex (x,y,z) yang kita perlu gunakan gegelung for untuk memastikan titik maksimum dan minimum diperoleh. Matlamat kita ada mencari nilai maksimum bagi koordinat x, y dan z.

–  tAB->minPoint menyimpan dalam bentuk vector setiap nilai koordinat yang maksimum diperoleh.

Step Kedua : Memetakan nilai maksimum dan nilai minimum

void cAABB::AABBInitVertices(cAABB *tAB)
{
tAB->VerticesAABB[0][0] = tAB->minPoint.x;    tAB->VerticesAABB[0][1] = tAB->minPoint.y;    tAB->VerticesAABB[0][2] = tAB->minPoint.z;
tAB->VerticesAABB[1][0] = tAB->maxPoint.x;    tAB->VerticesAABB[1][1] = tAB->maxPoint.y;    tAB->VerticesAABB[1][2] = tAB->maxPoint.z;
tAB->VerticesAABB[2][0] = tAB->maxPoint.x;    tAB->VerticesAABB[2][1] = tAB->minPoint.y;    tAB->VerticesAABB[2][2] = tAB->minPoint.z;
tAB->VerticesAABB[3][0] = tAB->minPoint.x;    tAB->VerticesAABB[3][1] = tAB->maxPoint.y;    tAB->VerticesAABB[3][2] = tAB->maxPoint.z;
tAB->VerticesAABB[4][0] = tAB->maxPoint.x;    tAB->VerticesAABB[4][1] = tAB->maxPoint.y;    tAB->VerticesAABB[4][2] = tAB->minPoint.z;
tAB->VerticesAABB[5][0] = tAB->minPoint.x;    tAB->VerticesAABB[5][1] = tAB->minPoint.y;    tAB->VerticesAABB[5][2] = tAB->maxPoint.z;
tAB->VerticesAABB[6][0] = tAB->minPoint.x;    tAB->VerticesAABB[6][1] = tAB->maxPoint.y;    tAB->VerticesAABB[6][2] = tAB->minPoint.z;
tAB->VerticesAABB[7][0] = tAB->maxPoint.x;    tAB->VerticesAABB[7][1] = tAB->minPoint.y;    tAB->VerticesAABB[7][2] = tAB->maxPoint.z;

tAB->FaceV[0][0] = 1;    tAB->FaceV[0][1] = 7;    tAB->FaceV[0][2] = 2;    tAB->FaceV[0][3] = 4;
tAB->FaceV[1][0] = 0;    tAB->FaceV[1][1] = 5;    tAB->FaceV[1][2] = 3;    tAB->FaceV[1][3] = 6;
tAB->FaceV[2][0] = 1;    tAB->FaceV[2][1] = 4;    tAB->FaceV[2][2] = 6;    tAB->FaceV[2][3] = 3;
tAB->FaceV[3][0] = 0;    tAB->FaceV[3][1] = 2;    tAB->FaceV[3][2] = 7;    tAB->FaceV[3][3] = 5;
tAB->FaceV[4][0] = 1;    tAB->FaceV[4][1] = 3;    tAB->FaceV[4][2] = 5;    tAB->FaceV[4][3] = 7;
tAB->FaceV[5][0] = 0;    tAB->FaceV[5][1] = 6;    tAB->FaceV[5][2] = 4;    tAB->FaceV[5][3] = 2;
}

Bagaimana ianya berfungsi?

– tAB->VerticesAABB berfungsi untuk memetakan nilai min dan max yang telah diperoleh seperti dalam rajah di atas

– tAB->FaceV pula merupakan pemetaan terhadap AABB itu sendiri. Di mana kita akan labelkan setiap face(permukaan).

Sebagai contoh

tAB->FaceV[0][0] = 1;    tAB->FaceV[0][1] = 7;    tAB->FaceV[0][2] = 2;    tAB->FaceV[0][3] = 4;

FaceV[0][0] merupakan titik permulaan, ianya akan disambungkan dengan FaceV[0][1] dan FaceV[0][2] dan FaceV[0][3] untuk menjadi satu surface (face)
jadi kita lihat ada 6 line keseluruhannya dan ianya bertujuaan menyimpan data sahaja kerana nanti kita akan gunakan gegelung for untuk cantumkannya. Setakat ini kita akan labelkan terlebih dahulu. jadi bermaksud.

tAB->FaceV[0][0], tAB->FaceV[2][0], dan tAB->FaceV[4][0] merupakan titik yang sama dan dilabelkan dengan nilai yang sama

Lihat rajah di atas untuk keterangan lanjut

Step Ketiga

Proses Rendering

//render aabb box
void cAABB::AABBBound(cAABB *targetAABB)
{
glLoadIdentity();
glPushAttrib(GL_ALL_ATTRIB_BITS );
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glLineWidth(2.0);
if (status)
{
glColor3f (1.0,0.5,1.0);
}
else
{
glColor3f (1.0,0.0,0.0);
}

glBegin(GL_QUADS);
for(int i=0; i<6; i++)
{
glVertex3f(targetAABB->VerticesAABB[targetAABB->FaceV[i][0]][0], targetAABB->VerticesAABB[targetAABB->FaceV[i][0]][1], targetAABB->VerticesAABB[targetAABB->FaceV[i][0]][2]);
glVertex3f(targetAABB->VerticesAABB[targetAABB->FaceV[i][1]][0], targetAABB->VerticesAABB[targetAABB->FaceV[i][1]][1], targetAABB->VerticesAABB[targetAABB->FaceV[i][1]][2]);
glVertex3f(targetAABB->VerticesAABB[targetAABB->FaceV[i][2]][0], targetAABB->VerticesAABB[targetAABB->FaceV[i][2]][1], targetAABB->VerticesAABB[targetAABB->FaceV[i][2]][2]);
glVertex3f(targetAABB->VerticesAABB[targetAABB->FaceV[i][3]][0], targetAABB->VerticesAABB[targetAABB->FaceV[i][3]][1], targetAABB->VerticesAABB[targetAABB->FaceV[i][3]][2]);
}
glEnd();
glPopAttrib();
}

Jadi kita lihat di situ, targetAABB->VerticesAABB[targetAABB->FaceV merupakan pencantuman hasil pemetaan yang kita lakukan tadi menggunakan function OpenGL iaitu glVertex3f.  Gegelung for dibuat sebanyak 6 kali mewakili 6 faces(permukaan)

Step Keempat : Menjana Objek beserta AABB

Maka step terakhir adalah menjana objek beserta AABB tersebut. Proses ini akan dipanggil pada main file (main.cpp)

Disertakan rajah hasil rendering tersebut

**saya akan kemaskini lagi artikel ini agar lebih detail lagi. Disebabkan kesuntukan masa untuk menerangkannya, maka saya cuba upgrade artikel ini senantiasa.
***At least sekarang kita tahu bahawa menerangkan sesuatu yang melibatkan pengaturcaraan object oriented di tambah penggunaan library akan menyebabkan kita kagum bagaimana researcher di luar sana mampu menerangkan dengan lebih tepat dan ringkas lagi.