Bu sayfadaki yazılar
Sayfanın metni
Sayfa 58
<body bgcolor="#CCCCCC" onResize="return false" onContextMenu="return false" onSelectStart="return false" onScroll="return false"> <script> // Küplerin Kenarlarını Temsil Eden Grafik Parçaları for(i = 0; i < 12; i++) document.write("<v:line id='l" + i + "' from='0 0' to='0 0'/>");
// Global Değişkenleri Tanımla var firstCoorX = new Array(100, 100, 100, 100, -100, -100, -100, -100); var firstCoorY = new Array(100, 100, -100, -100, 100, 100, -100, -100); var firstCoorZ = new Array(100, -100, 100, -100, 100, -100, 100, -100); var coorX = new Array(); var coorY = new Array(); var coorZ = new Array(); var px = new Array(); var py = new Array(); var zoom = 300, dist = 350; var midX = 200, midY = 200; var PI = 3.1415926535; var angleXaxis = 0, angleYaxis = 0, angleZaxis = 0; var hexN = new Array(); hexN[0] = "0";hexN[1] = "1";hexN[2] = "2";hexN[3] = "3"; hexN[4] = "4";hexN[5] = "5";hexN[6] = "6";hexN[7] = "7"; hexN[8] = "8";hexN[9] = "9";hexN[10] = "A";hexN[11] = "B"; hexN[12] = "C";hexN[13] = "D";hexN[14] = "E";hexN[15] = "F";
// Küp Çevirme Fonksiyonu function rotateCube() { for(i = 0; i < 8; i++) { // X Ekseninde Çevir coorY[i] = firstCoorY[i] * Math.cos(angleXaxis / 180.0 * PI) + firstCoorZ[i] * Math.sin(angleXaxis / 180.0 * PI); coorZ[i] = firstCoorY[i] * Math.sin(angleXaxis / 180.0 * PI) - firstCoorZ[i] * Math.cos(angleXaxis / 180.0 * PI); // Y Ekseninde Çevir coorX[i] = coorZ[i] * Math.cos(angleYaxis / 180.0 * PI) + firstCoorX[i] * Math.sin(angleYaxis / 180.0 * PI); coorZ[i] = coorZ[i] * Math.sin(angleYaxis / 180.0 * PI) - firstCoorX[i] * Math.cos(angleYaxis / 180.0 * PI); // Z Ekseninde Çevir temp = coorX[i]; coorX[i] = coorX[i] * Math.cos(angleZaxis / 180.0 * PI) + coorY[i] * Math.sin(angleZaxis / 180.0 * PI); coorY[i] = temp * Math.sin(angleZaxis / 180.0 * PI) - coorY[i] * Math.cos(angleZaxis / 180.0 * PI); } // Dönüş Açılarını Arttır angleXaxis = (angleXaxis + 1) % 360; angleYaxis = (angleYaxis + 2) % 360; angleZaxis = (angleZaxis + 3) % 360; }
// İzdüşüm ve Plot Fonksiyonu function setCube() { for(i = 0; i < 8; i++) // Her 8 Köşe İçin { if(coorZ[i] + dist > 0) // Eğer Görünür Durumdaysa { // FORMÜL: projection_x = center_of_the_area + (x / (z + distance) * zoom) px[i] = midX + (coorX[i] / (coorZ[i] + dist) * zoom); // FORMÜL: projection_y = middle_of_the_area + (y / (z + distance) * zoom) py[i] = midY + (coorY[i] / (coorZ[i] + dist) * zoom);
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 59
} } // Taban Yüzeyini Çiz drawLine(0,1,"l0"); drawLine(1,3,"l1"); drawLine(3,2,"l2"); drawLine(2,0,"l3"); // Tavan Yüzeyini Çiz drawLine(4,5,"l4"); drawLine(5,7,"l5"); drawLine(7,6,"l6"); drawLine(6,4,"l7");
// Tavan ve Taban Yüzeylerini Birleştiren Çizgilerini Çiz drawLine(0,4,"l8"); drawLine(1,5,"l9"); drawLine(2,6,"l10"); drawLine(3,7,"l11"); }
// 10'ludan 16'lı Sayı Sistemine Dönüşüm Fonksiyonu function conv2Hex(decval) { leftval = parseInt(decval / 16, 10); rightval = decval % 16; hexval = hexN[leftval] + hexN[rightval]; return hexval; }
// Çizgi Çizen Fonksiyon function drawLine(p1, p2, obj) { document.all(obj).from = px[p1] + " " + py[p1]; document.all(obj).to = px[p2] + " " + py[p2]; }
// Ana Rutin function cubeAnim() { rotateCube(); // Kübü Çevir setCube(); // İzdüşüm Al ve Çiz setTimeout("cubeAnim()", 20); // 20 Milisaniye Sonra Bir Sonraki Ekranı Çiz } cubeAnim(); // İlk Ekranı Hesapla </script> </body> </html>
Not: Firefox gibi bazı browserlar henüz VML'i desteklemiyorlar. Yukarıdaki script en güvenli biçimde Internet Explorer'ın yeni versiyonlarıyla çalışacaktır.
Evet, gördüğünüz gibi derleyici bile yok, yalnızca Notepad'i açıyoruz ve yazıyoruz. Ancak amaç demomuzu HTML platformunda yapmak değil. Buradaki amaç hızlıca aklımıza gelen bazı efektleri test etmek ya da bu efektler için veri üretmek.
VBS ve JS:
Evet, gelelim HTML harici scripting dillerinin kullanımına. HTML scripting örneklerinde JavaScript kullanmıştık. Her iki dilin de yapısı hakkında genel bilginiz olması için HTML harici kullanımda Visual Basic Script kullanacağım.
İlk olarak JavaScript'ten ilk yaptığımız örneği uygulayalım, yani HTML kullanmadan Visual Basic Script'ten bir sinüs tablosu üretelim.