If you're seeing this message, it means we're having trouble loading external resources on our website.

Եթե գտնվում ես վեբ զտիչի հետևում, խնդրում ենք համոզվել, որ *.kastatic.org և *.kasandbox.org տիրույթները հանված են արգելափակումից։

Հիմնական նյութ

Վեկտորի բացարձակ մեծությունն ու նորմավորումը

Ինչպես տեսանք, բազմապատկումն ու բաժանումը առանց վեկտորի ուղղություն փոխելու վեկտորի երկարությունը փոփոխելու միջոցներ են։ Միգուցե այս պահին մտածում ես. «Լավ, բայց վեկտորի երկարությունն ինչպե՞ս չափեմ։ Գիտեմ դրա բաղադրիչները՝ x-ը և y-ը, սակայն որքա՞ն է սլաքի երկարությունը պիքսելներով»։ Իրականում շատ օգտակար և կարևոր է իմանալ՝ ինչպես հաշվել վեկտորի երկարությունը, որը հաճախ կոչվում է վեկտորի նորմ։
Պատկեր 1,10՝ v վեկտորի երկարությունը կամ «նորմը», հաճախ գրվում է ||v||
Ուշադրություն դարձրու, որ տրված դիագրամում որպես սլաք պատկերված վեկտորը իր երկու բաղադրիչների՝ x-ի և y-ի հետ ուղղանկյուն եռանկյուն է ստեղծում։ Կողմերը բաղադրիչներն են, ներքնաձիգը հենց սլաքն է։ Ուղղանկյուն եռանկյունի առկայությունը շատ լավ է, քանի որ Պյութագորաս անունով հույն մաթեմատիկոսը դուրս էր բերել ուղղանկյուն եռանկյան կողմերի և ներքնաձիգի հարաբերությունը նկարագրող պարզ բանաձև, և այն կարող ենք կիրառել։
Պյութագորասի թեորեմը հետևյալն է. a քառակուսի գումարած b քառակուսի հավասար է c քառակուսի։
Այս բանաձևի միջոցով v-ի երկարությունը կարող ենք հաշվել այսպես՝
||v||=vxvx+vyvy
Հետևաբար, PVector կիրառելու կոդը կլինի հետևյալը.
PVector.prototype.mag = function() {
    return sqrt(this.x*this.x + this.y*this.y);
};
Հետևյալ օրինակում կարող ես վեկտորի երկարությունը տեսողական պատկերացնել՝ նայելով կտավի վերին գոտուն։
Վեկտորի երկարության հաշվարկն ընդամենը սկիզբն է։ Երկարության ֆունկցիան բազմաթիվ հնարավորություններ է տալիս, որոնցից մեկը նորմավորումն է։ Նորմավորում նշանակում է ինչ-որ բան «ստանդարտ» կամ «նորմալ» դարձնել։ Վեկտորների դեպքում ենթադրում ենք, որ ստանդարտ վեկտորի երկարությունը 1 է։\ Հետևաբար, ցանկացած վեկտոր նորմավորելու համար պետք է այն վերցնել, դրա ուղղությունը չփոխել, երկարությունը դարձնել 1 և այդպիսով ստանալ միավոր վեկտոր։
Քանի որ միավոր վեկտորը վեկտորի ուղղությունն է նկարագրում՝ առանց երկարությանն անդրադառնալու, դրա առկայությունը շատ օգտակար է։ Հաջորդ հատվածում՝ ուժերի հետ աշխատելիս, օգտակարությունն ինքներս կտեսնենք։
u վեկտորի միավոր վեկտորը՝ u^, հաշվում են այսպես՝
u^=u||u||
Այլ կերպ ասած, վեկտորը նորմավորելու համար յուրաքանչյուր բաղադրիչ պետք է բաժանես իր նորմի վրա։ Բավականին տրամաբանական է, չէ՞։ Ենթադրենք՝ վեկտորի երկարությունը 5 է։ 5 բաժանած 5-ի հավասար է 1-ի։ Հետևաբար, եթե ուղղանկյուն եռանկյունը դիտարկենք, ներքնաձիգի մասշտաբը պետք է փոխենք՝ 5-ի բաժանելով։ Այդ ընթացքում կողերն էլ են փոքրանում և բաժանվում 5-ի։
Հետևաբար, PVector պրոյեկտում նորմավորման ֆունկցիան այսպես ենք գրում.
PVector.prototype.normalize = function() {
  var m = this.mag();
  this.div(m);
};
Իհարկե, մի փոքր խնդիր կա. ի՞նչ կպատահի, եթե վեկտորի նորմը 0 լինի։ Չէ՞ որ չենք կարող 0-ի բաժանել։ Դրա համար պետք է ընդամենը սխալների ստուգում կատարել։
PVector.prototype.normalize = function() {
  var m = this.mag();
  if (m > 0) {
    this.div(m);
  }
};
Այս ծրագրում միշտ նորմավորում ենք կենտրոնի հետ համեմատած դիրքը ներկայացնող վեկտորը և բազմապատկում ենք այն, որպեսզի այն տեսանելի լինի, քանի որ 1 պիքսելը շատ փոքր է։

«Բնական նմանակիչներ» դասընթացը ստեղծվել է Դանիել Շիֆմանի «Կոդի բնույթը» գրքի հիման վրա և կիրառվում է ըստ Creative Commons Attribution-NonCommercial 3,0 Unported License-ի։

Ուզո՞ւմ ես միանալ խոսակցությանը։

Առայժմ հրապարակումներ չկան։
Անգլերեն հասկանո՞ւմ ես: Սեղմիր այստեղ և ավելի շատ քննարկումներ կգտնես «Քան» ակադեմիայի անգլերեն կայքում: