Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Liste 13. Küreyi kesen dört kenarl› bir düzlem<br />
$sphere = $world->createObject('sphere',<br />
array('r' => 85, 'detail' => 4));<br />
$sphere->setColor(new Image_3D_Color(255, 255, 255, 150));<br />
$plane = $world->createObject('polygon', array(<br />
new Image_3D_Point(-120, 0, -120),<br />
new Image_3D_Point(-120, 0, 120),<br />
new Image_3D_Point( 120, 0, 120),<br />
new Image_3D_Point( 120, 0, -120)<br />
) );<br />
$plane->setColor(new Image_3D_Color(255, 255, 255));<br />
$plane->transform($world->createMatrix('Rotation', array(15,15,-10)));<br />
kullan›labilecek yerleflik denetimleri<br />
içerir. Görüntünün bir ekran görüntüsü<br />
afla¤›da gösterilmifltir.<br />
fiekil 15. SVGRotate<br />
sürücüsü görüntüyü<br />
gerçek zamanl› olarak<br />
ifllemek için<br />
kullan›labilecek<br />
denetimleri ve<br />
komutlar› içerir.<br />
Komut dosyas› içeren SVG dosyalar›<br />
sa¤lanan deste¤in s›n›rl› oldu¤unu<br />
göz önünde bulundurun. Sonuçta ortaya<br />
ç›kan dosya Adobe SVG eklentisi<br />
olan bir Internet Explorer'da çal›flmas›na<br />
karfl›n Firefox'ta düzgün görüntülenmemifltir.<br />
ZBuffer<br />
3 boyutlu alanlar›n 2 boyutlu bir görüntüye<br />
dönüfltürülmesi için hangi<br />
nesnelerin üst üste gelip di¤erlerini<br />
gizledi¤ini belirleyebilen özel bir algoritma<br />
gerekir. 3 boyutlu modellemede,<br />
nesnelerin 2 boyutlu bir alanda görünebilirli¤inin<br />
yönetilmesine Z-buffering<br />
(Z-arabelle¤i) ad› verilir.<br />
fiimdiye kadar size verilen örneklerin<br />
hiçbirinde di¤er nesnelerin üzerine<br />
gelen nesnelerle ilgili sorunlar yoktu.<br />
Böyle bir sorunla karfl›lafl›rsan›z, en<br />
uygun seçenek ç›kt› sürücünüzü<br />
GD'den ZBuffer'a de¤ifltirmektir.<br />
ZBuffer sürücüsü bir PNG görüntüsü<br />
oluflturmak üzere hala GD'yi kullan›r,<br />
ancak 2 boyutlu bir bit efllem üzerinde<br />
çizili olduklar›ndan 3 boyutlu nesneleri<br />
daha iyi yönetebilir.<br />
Liste 13'teki kodu kullanarak, nesnelerin<br />
Z-buffering iflleminde özellikle<br />
bir çak›flmaya neden olacak, ayn› alan›<br />
kaplayan iki nesne yaratacaks›n›z. Kürenin<br />
alfa fleffafl›k de¤eri 150 olarak<br />
verilmifltir; böylece küreyi ortas›ndan<br />
ikiye kesen düzlemi görebilirsiniz.<br />
Bu nesneyi GD sürücüsünü kullanarak<br />
oluflturursan›z, afla¤›da gösterildi-<br />
¤i gibi, küre düzlemin önünde duruyormufl<br />
gibi görünür.<br />
fiekil 16. GD sürücüsü<br />
kullan›larak ayr› ayr›<br />
oluflturulmufl üst üste<br />
gelen iki adet 3<br />
boyutlu nesne.<br />
Ancak, yaratt›¤›n›z düzlemin koordinatlar›ndan,<br />
bunun kürenin içinden<br />
geçip küreyi kesmesi gerekti¤ini bilirsiniz.<br />
Sürücünün ZBuffer olarak de¤ifltirilmesi<br />
bu sorunu çözer ve afla¤›da<br />
gösterilen PNG dosyas› ortaya ç›kar.<br />
fiekil 17. ZBuffer<br />
sürücüsü uygulanarak<br />
çözülen, üst üste<br />
gelmifl iki adet 3<br />
boyutlu nesne<br />
aras›ndaki ZBuffer<br />
çak›flmalar›.<br />
ASCII<br />
Örneklerinizde ASCII sürücüsü bulunmamaktad›r,<br />
ancak bu sürücünün amac›<br />
renkli bir ANSI uçbiriminde görüntülenecek<br />
görüntüler yarat›lmas›na olanak<br />
vermektir. Windows® kurulu bir<br />
PC'de çal›fl›yorsan›z, bu sürücüden elde<br />
edilen ç›kt› büyük olas›l›kla sizin<br />
için pek yararl› olamayacakt›r.<br />
Pratik örneklere geçifl<br />
fiimdiye kadar gördü¤ünüz örnekler bu<br />
paketin PHP'de 3 boyutlu görüntüler<br />
oluflturma yeteneklerini göstermifltir.<br />
Web sayfalar›n› yönetmek için icat edilen<br />
bu dilin bu kadar ayr›nt›l› görüntü<br />
dosyalar› oluflturmak üzere kullan›labilece¤ini<br />
kim tahmin edebilirdi Bu oldukça<br />
iyi bir olanak, ancak 3 boyutlu<br />
sihirbaz ya da hesap merakl›s› de¤ilseniz<br />
bu size s›k›c› gelmifl olabilir. Basit<br />
nesneleri ve komut sat›r› komut dosyalar›n›<br />
al›p nas›l biraz daha ilginç örnekler<br />
oluflturabilece¤inize bakal›m.<br />
[http://www.fazlamesai.net/index.php<br />
a=article&sid=3994] adresinde bu<br />
makalenin devam›n› bulabilirsiniz.<br />
Kaynaklar<br />
Bilgi Edinme<br />
• PEAR:: Image_3D ürünü hakk›ndaki<br />
bilgileri okuyabilir ve bu ürünü kurabilirsiniz.<br />
(http://pear.php.net/package/<br />
Image_3D)<br />
• "Connecting PHP Applications to<br />
Apache Derby" (PHP Uygulamalar›n›n<br />
Apache Derby'ye Ba¤lanmas›) bafll›kl›<br />
konuyu okuyarak pasta grafi¤i nas›l<br />
gelifltirece¤inizi ö¤renebilirsiniz.<br />
(http://www-128.ibm.com/<br />
developerworks/db2/library/<br />
techarticle/dm-0409casey/)<br />
• "Add interactivity to your SVG"<br />
(SVG'nize etkileflim eklenmesi) bafll›kl›<br />
konuyu okuyarak SVG görüntüleri ve<br />
komut dosyalar› hakk›nda ek bilgi edinebilirsiniz.<br />
(http://www-128.ibm.<br />
com/developerworks/db2/library/tec<br />
harticle/dm-0409casey)<br />
• "Getting started with objects with<br />
PHP V5" (PHP V5 ile nesnelere bafllangݍ)<br />
bafll›kl› konuyu okuyarak PHP<br />
V5 nesne/s›n›f sözdizimi konusundaki<br />
bilgilerinizi tazeleyebilirsiniz. (http://<br />
www-128.ibm.com/ developerworks/<br />
opensource/library/os-phpobj/)<br />
• Kartezyen koordinat sistemi hakk›nda<br />
ek bilgi edinmek için Cartesian coordinate<br />
system bafll›kl› sayfaya bakabilirsiniz.<br />
(http://en.wikipedia.org/<br />
wiki/Cartesian_coordinate)<br />
• PHP ve gd kitapl›¤›n› kullanarak dinamik<br />
bit efllem görüntüleri oluflturma<br />
konusunda bilgi için Generate dynamic<br />
bitmap graphics with PHP and gd"<br />
(PHP ve gd ile dinamik bit efllem grafikleri<br />
oluflturma) bafll›kl› konuyu okuyabilirsiniz.<br />
(http://www-<br />
128.ibm.com/developerworks/edu/<br />
wa-dw-wa-bitmaphp-i.html)<br />
• PHP'de nesne odakl› bir grafik katman›<br />
oluflturma hakk›nda bilgi almak<br />
için "Create graphics the smart way<br />
with PHP" (PHP ile ak›ll› grafikler yaratma)<br />
bafll›kl› konuyu okuyabilirsiniz.<br />
(http://www-128.ibm.com/<br />
developerworks/edu/wa-dw-wabitmaphp-i.html)<br />
• developerWorks teknik etkinlikler ve<br />
Web yay›nlar› sayesinde güncel bilgiler<br />
edinebilirsiniz.<br />
HABER LINUX 59