You are here

۶-۱ نرمال کردن بردار

Error message

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls in book_prev() (line 775 of /home/molavy/public_html/modules/book/book.module).

 

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

به دلیل اینکه این بردار تنها جهت بردار ها را نشان می دهد و طول آن ها کاری ندارد، بهتر است که بردار واحد به راحتی در دسترس باشد. استفاده از این مفهوم را به در فصل دو نیرو ها خواهیم دید.

 برای هر بردار u⃗ یک بردار میزان یا واحد (به صورت û نوشته می شود) به شکل زیر محاسبه می شود:

 û=u⃗ /∥u⃗∥

به بیان دیگر، برای نرمال کردن یک بردار، تنهاکافی است مقدار هر جزء را بر اندازه آن تقسیم کنیم.این موضوع کاملا مشهود است. می گوییم یک اندازه یک بردار ۵ است. خوب، ۵ تقسیم بر ۵ برابر ۱. بیاید به مثلث قائم الزاویه خودمان برگردیم، وقتی ما نیاز به تغییر اندازه ی وتر با تقسیم آن بر ۵ داریم، اندازه اضلاع مثلث نیز به پنج تقسیم می شوند.

تصویر ۱-۱۳

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

 void normalize() {
  float m = mag();
  div(m);
}

البته، یک مسئله کوچک وجود دارد. چه اتفاقی می افتد اگر طول بردار صفر باشد؟ ما نمی توانیم تقسیم بر صفر انجام دهیم! یک بررسی خطای کوچک این مشکل را رفع می کند:

 void normalize() {
 float m = mag();
 if (m != 0) {
   div(m);
 }
} 

مثال ۱-۶ نرمال کردن یک بردار

 void draw() {
  background(255);
 
  PVector mouse = new PVector(mouseX,mouseY);
  PVector center = new PVector(width/2,height/2);
  mouse.sub(center);
 
  mouse.normalize();
  mouse.mult(50);
  translate(width/2,height/2);
  line(0,0,mouse.x,mouse.y);
 
}
 

Add new comment

انیمیشن پیام راشل کوری