Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Liste 9. Üç noktal› y›ld›z oluflturulmas›<br />
$polygons = array();<br />
// Front face<br />
$polygons[] = array(<br />
array(0, -120, 0), array(-18, -12, 0),<br />
array(-86, 48, 0), array(0, 18, 0),<br />
array(86, 48, 0), array(18, -12, 0)<br />
);<br />
// Back face<br />
$polygons[] = array(<br />
array(0, -120, 60), array(-18, -12, 60),<br />
array(-86, 48, 60), array(0, 18, 60),<br />
array(86, 48, 60), array(18, -12, 60)<br />
);<br />
// 3 Sides<br />
$polygons[] = array(<br />
array(0, -120, 0), array(-18, -12, 0),<br />
array(-86, 48, 0), array(-86, 48, 60),<br />
array(-18, -12, 60),array(0, -120, 60)<br />
);<br />
$polygons[] = array(<br />
array(-86, 48, 0), array(0, 18, 0),<br />
array(86, 48, 0), array(86, 48, 60),<br />
array(0, 18, 60), array(-86, 48, 60)<br />
);<br />
$polygons[] = array(<br />
array(86, 48, 0), array(18, -12, 0),<br />
array(0, -120, 0), array(0, -120, 60),<br />
array(18, -12, 60),array(86, 48, 60)<br />
);<br />
foreach ($polygons as $poly) {<br />
$points = array();<br />
foreach ($poly as $set) {<br />
$points[] = new Image_3D_Point($set[0], $set[1], $set[2]);<br />
}<br />
$p = $world->createObject('polygon', $points);<br />
$p->setColor(new Image_3D_Color(255, 255, 255));<br />
}<br />
$world->transform($world->createMatrix('Rotation',<br />
array(0, -25, -15)));<br />
de devreye girer. Hiç Calculus dersi almad›ysan›z<br />
ya da bu konudaki bilgilerinizi<br />
unuttuysan›z, bu yaz›da, körelmifl<br />
becerilerinizi bilemeye çal›flmayaca-<br />
¤›z. Ancak, afla¤›daki modellerde neler<br />
olup bitti¤ine iliflkin temel bir fikir vermeye<br />
çal›flaca¤›z.<br />
Mathematica yaz›l›m›yla yüzeyleri<br />
ve k›vr›mlar› tasarlama deneyiminiz<br />
varsa, s›radaki iki örnek size tan›d›k<br />
gelecektir.<br />
Helezon<br />
Bu iki listenin ilki yükselen bir sarmald›r.<br />
Yüzeydeki her bir noktan›n, afla¤›-<br />
daki parametrik fonksiyondan türeyen<br />
X, Y ve Z koordinatlar› vard›r:<br />
f[s,t] = {s * cos(2 t), s* sin(2 t),<br />
t}<br />
Bu yüzeyi yaratmak için, önce alan›n›zda<br />
yeni bir "efllem" nesnesi yaratacaks›n›z.<br />
$map = $world->createObject('map');<br />
Efllem, yukar›daki özel çokgende<br />
gördü¤ünüz gibi 3 boyutlu bir yüzey<br />
oluflturmak için Image_3D_Point nesnelerinin<br />
dizilimini al›r. Bu noktalar›n<br />
her biri yukar›daki ifllevinize göre tan›mlanabilir:<br />
new Image_3D_Point( ($s * cos(2 *<br />
pi() * $t)),<br />
($s * sin(2 * pi() * $t)),<br />
($t) );<br />
s ve t parametrelerini s›ras›yla 0-1<br />
ve 0-6 aral›klar›nda de¤ifltireceksiniz.<br />
Yüzeye uygun bir boyut vermek için,<br />
her bir koordinat› $scale ayar›na atayaca¤›n›z<br />
istedi¤iniz bir de¤erle çarpacaks›n›z.<br />
Liste 10 içinde, efllem nesnesinin<br />
nas›l oluflturuldu¤u gösterilir ve di¤er<br />
örneklerde de oldu¤u gibi, nesnenin<br />
son halinin rengini, döndürmesini ve<br />
konumunu siz belirlersiniz<br />
fiekil 13 içinde sonuçta ortaya ç›-<br />
kan görüntü gösterilir. Helezonun ayr›nt›,<br />
ölçek ve yükseklik düzeyleri<br />
$scale, $detail ve $levels de¤iflkenleriyle<br />
belirlenir.<br />
fiekil 13. Image_3D<br />
paketinin efllem<br />
nesnesi kullan›larak<br />
oluflturulmufl helezon.<br />
Ortas› delik kek kal›b› flekli<br />
Stokes teoreminin bir uygulamas› olan<br />
ikinci yüzey integraliniz de ilginç bir<br />
sonuç verir. Bu yüzeyi, Z ile ifade edilen<br />
yüksekli¤i de¤iflken ve X ve Y düzlemlerinin<br />
bafllang›ç noktas›ndan her<br />
yöne yay›lan bir sinüs dalgas›n›n ürünü<br />
olarak düflünebilirsiniz.<br />
Calculus terimlerini bir yana b›rak›rsak,<br />
bu fleklin ortas› delik bir kek kal›b›na<br />
benzedi¤ini söyleyebiliriz.<br />
Bu alan, afla¤›daki parametrik iflleve<br />
göre tan›mlanacakt›r:<br />
f[r,t] = {r * cos(t), r * sin(t), sin(4 <br />
r)}<br />
Yine, bu yüzey için efllem nesnesine<br />
eklenecek noktalar› iflaretleyeceksiniz.<br />
Her nokta Liste 11'de tan›mlan›r.<br />
Her bir noktay›, düzgün bir yüzey<br />
HABER LINUX 57