موتور سه بعدی ساز چهار نوع تغییر شکل را تعریف می کند : تغییر مکان ، تغییر مقیاس ، چرخش و پرسپکتیو . حال هر عمل را کمی شرح می دهیم
تغییر مکان
تغییر مکان را می توان با عمل حجمع انجام داد . در اکشن اسکریپت می توان مکان نقطه
تغییر داد . مثلا tz, , ty . tx را با افزودن P
p[0] += tx;
p[1] += ty;
p[2] += tz;
جا به جا میشود tz , ty , tx به اندازه z , y ,x پس از این تغییر در طول محورهای p نقطه
تغییر مقیاس
sz , sy ,sx را با استفاده از p تغییر مقیاس یعنی عمل اکشن اسکریپت می توان نقطه
بدین صورت تغییر مقیاس داد
p[0] *= sx;
p[1] *= sy;
p[2] *= sz;
چرخش
چرخش را می توان با تغییر اندازه حول یک محور اندازه گیری کرد . چرخش در موتور سه z x را بدین صورت حول محور p تعریف شده است . نقطه z , y , x بعدی ساز ما حول محور
می چرخانیم
y = p[1] *Math.cos ( theta ) - p[2] *Math.sin ( theta ) ;
z = p[1] *Math.sin ( theta ) + p[2] *Math.cos ( theta ) ;
p[1] = y;
p[2] = z;
می چرخانیم y را بدین صورت حول محور p نقطه
z = p[2] *Math.cos ( theta ) - p[0] *Math.sin ( theta ) ;
x = p[2] *Math.sin ( theta ) + p[0] *Math.sin ( theta ) ;
p[2] = z;
p[0] = x;
می چرخانیم z را بدین صورت حول محور p نقطه
x = p[0] *Math.cos ( theta ) - p[1] *Math.sin ( theta ) ;
y = p[0] *Math.sin ( theta ) + p[1] *Math.cos ( theta ) ;
p[0] = x;
p[1] = y; پرسپکتیو یا تغییرنما
هنگامی که به نقشه دو بعدی یک خانه نگاه میکنیم چیزی را می بینیم که اصطلاحا یک x صفحه منطبق با محورx , yترسیم موازی نامیده می شود . در ترسیم موازی محورهای
صحنه هستند x , y های
x , yکه در مقدار perspective برای یافتن مقدار perspective =c/(c+z) از فرمول ساده
بیشتر باشد اثر پرسپکتیو کمتر c نقطه ضرب خواهد شد استفاده میکنیم . هرچه مقدار
تغییر می دهند عبارتند از c را با ثابت p میشود . دستوراتی که به نقطه
if ( c-p[2] == 0 ) perspective = 1;
else p = perspective / p [2] + perspective;
if (c <= 0) perspective = 1;
p [0] *= perspective;
p[1] *= perspective;
تمام شد.
قربان شما علي. .