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

Ако си зад уеб филтър, моля, увери се, че домейните *. kastatic.org и *. kasandbox.org са разрешени.

Основно съдържание

Повече векторна математика

Събирането наистина беше първата стъпка. Има много математически операции, които обикновено се използват с вектори. По-долу е пълният списък на операциите като функции в PVector обект от ProcessingJS. Ще преминем през някои от ключовите сега. С нарастването на сложността на примерите към последните раздели, ще продължим да разкриваме повече подробности за функциите.
  • add() — събира вектори
  • sub() — изважда вектори
  • mult() — скалира вектор с умножение
  • div() — скалира вектор с деление
  • mag() — изчислява големината на вектора
  • normalize() — нормализира вектора до единица с големина 1
  • limit() — ограничава големината на вектор
  • heading2D() — двуизмерното заглавие на вектор, изразено като ъгъл
  • dist() —Евклидовото разстояние между два вектора (считани за точки)
  • angleBetween() — намира ъгъла между два вектора
  • dot() — точковото произведение на два вектора
  • cross() — произведението на кръст на два вектора (отнася се само за три измерения)
След като покрихме събирането, нека да започнем с изваждането. Това не е толкова зле; просто вземи знака плюс и го замени с минус!

Изваждане на вектори

w=uv
може да бъде записано като:
wx=uxvx
wy=uyvy
и така функцията вътре в PVector изглежда по този начин:
PVector.prototype.sub = function(vector2) {
    this.x = this.x - vector2.x;
    this.y = this.y - vector2.y;
};
Следващият пример демонстрира векторно изваждане като взима разликата между две точки – мястото на мишката и центъра на прозореца.
Основни числови свойства с вектори
Когато правим изчисления с реални числа, те се подчиняват на следните основни правила:
Комутативното правило: 3+2=2+3
Асоциативното правило: (3+2)+1=3+(2+1)
Тези същите правила са верни и за математиката с вектори:
Комутативното правило: u+v=v+u
Асоциативното правило: u+(v+w)=(u+v)+w

Векторно умножение

Продължаваме с умножение и тук ще трябва да мислим по малко по- различен начин. Когато говорим за умножаване на вектор, обикновено имаме предвид скалиране на вектор. Ако искаме да скалираме вектор до два пъти или една-трета от размера му (като посоката му остане същата), бихме казали: "Да умножим вектора по 2" или "Да умножим вектора с 1/3." Обърни внимание, че умножаваме вектора скаларно – по число – а не по друг вектор.
За да мащабираме вектор, ние увеличаваме всеки компонент (x и y) скаларно.
w=un
може да се запише като:
wx=uxnwy=uyn
Скалиране на вектор
Да разгледаме един пример с векторна нотация.
u=(3,7)n=3w=unwx=33wy=73w=(9,21)
Следователно функцията вътре в обекта PVector ще гласи следното:
PVector.prototype.mult = function(n) {
  this.x = this.x * n;
  this.y = this.y * n;
}
И можем просто да използваме mult в кода:
var u = new PVector(-3,7); 
// Този PVector вече е три пъти по-голям и е равен на (-9,21).
 u.mult(3);
Това е примерът от по-рано, но тук умножаваме вектора по 0,5 всеки път, така че скалира наполовина:
Вместо да умножаваме горното по 0,5, можем да го разделим на 2. Делението работи като умножението – просто заместваме знака за умножение (звездичка) със знака за деление (наклонена напред черта).
Ето как е имплементиран вътрешно методът div:
PVector.prototype.div = function(n) {
  this.x = this.x / n;
  this.y = this.y / n;
}
И ето как можем да го използваме в код:
var u = new PVector(8, -4);
u.div(2);

Още числови свойства на векторите

Както и при събирането, основните алгебрични правила за умножение важат за векторите.
Асоциативното правило: (nm)v=n(mv)
Дистрибутивното правило с 2 скалара и 1 вектор: (n+m)v=nv+mv
Дистрибутивното правило с 2 вектора и 1 скалар: (u+v)n=un+vn
Искаш ли да упражниш задачите с вектори? Можеш да научиш повече тук в Кан Академия в нашия раздел за Линейна алгебра: Вектори.

Курсът "Компютърни симулации на физични явления" е производeн на "Природата на кода" от Даниел Шифман, използвана от Creative Commons Attribution-NonCommercial 3,0 Unported License.

Искаш ли да се присъединиш към разговора?

Все още няма публикации.
Разбираш ли английски? Натисни тук, за да видиш още дискусии в английския сайт на Кан Академия.