شما اینجا هستید

۲-۱ بردار ها برای برنامه نویسان processing

پیغام خطا

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls در book_prev() (خط 775 در /home/molavy/public_html/modules/book/book.module).

یک نگاه به بردار تفاوت بین دو نقطه است. در نظر بگیرید مخواهیم دستورالعملی برای حرکت از یک نقطه به نقطه دیگر بنویسیم.

اینجا چند بردار و مسیر های حرکت را می بینید:

تصویر 1.2

پانزده قدم به غرب حرکت کنید، بچرخید و سه قدم به شمال حرکت کنید

(-15, 3)

سه قدم به شرق حرکت کنید، بچرخید پنج قدم به شمال حرکت کنید

(3, 4)

دو قدم به شرق حرکت کنید، بچرخید و یک قدم به جنوب حرکت کنید.

(2, -1)

شما قبلا این کار را در برنامه نویسی حرکت انجام داده اید. برای هر انیمیشن حرکت( برای مثال، یک حلقه از تابع draw در processing. شما به یک شی گفتید که چطور از تعداد مشخصی پیکسل از یک به صورت افقی و همینطور تعداد مشخصی پیکسل به صورت عمودی حرکت کند.

تصویر ۱-۳

برای هر فریم:

موقعیت جدید= سرعت اعمال شده به موقعیت جاری

اگر سرعت یک بردار باشد(اختلاف بین دو نقطه)، موقعیت چیست؟ این همچنین یک بردار است؟ به صورت فنی، یکی ممکن است بحث داشته باشد بدلیل اینکه به ما نمی گوید که چطور از یک موقعیت به موقعیت دیگر حرکت کنیم، موقعیت یک بردار نیست-- تنها یک نقطه در فضا را شرح می دهد.

به هر حال، یک راه برای شرح یک موقعیت، یک راه برای رسیدن به آن موقعیت است.

بنابراین، یک موقعیت می تواند نمایش برداری از اختلاف یک موقعیت بین مقصد و یک موقعیت مبدا باشد.

 

تصویر ۱-۴

بیایید داده های زیر را برای سرعت و موقعیت امتحان کنیم. در مثال توپ جهنده، ما اطلاعات زیر را داشتیم:

موقعیت

x,y

سرعت

xspeed,yspeed

توجه کنید ما داده های یکسانی برای هر دو ذخیره می کنیم-- دو عدد ممیز شناور، یک x و یک y. چون ما خودمان یک کلاس بردار را نوشتیم با مقدمات شروع کردیم:

 class PVector {
 
  float x;
  float y;
 
  PVector(float x_, float y_) {
    x = x_;
    y = y_;
  }
 
} 

این هسته کار است، یک pvector برای ذخیره دو مقدار مناسب است( یا سه تا، همانطور که بعدا در مثال های سه بعدی خواهیم دید).

پس بنابراین این کد:

 float x = 100;
float y = 100;
float xspeed = 1;
float yspeed = 3.3; 

تبدیل به این میشود:

PVector location = new PVector(100,100);
PVector velocity = new PVector(1,3.3); 

حال که ما دو شی بردار داریم( سرعت و موقعیت)، آماده پیاده سازی الگوریتم حرکت هستیم.

موقعیت= موقعیت+سرعت. در مثال ۱-۱ ، بدون بردارها، ما داریم:

 x = x + xspeed;
y = y + yspeed; 

در دنیای آرمانی، ما می توانیم کد بالا را به شکل زیر بنویسیم:

 

location = location + velocity;

 

اگرچه در processing، عملگر + تنها برای مقدار های اولیه (عددی، عدد شناور، غیره) استفاده میشود.
Processing نمی داند چگونه دو بردار Pvector را با هم جمع کند، همانطور که نمی داند چطور دو شی Pfont یا Pimage را با هم جمع کند. خوشبختانه برای ما، کلاس Pvector شامل توابع مورد نیاز در عملیات های عمومی ریاضی است.

دیدگاه جدیدی بگذارید