Основно съдържание
Курс: Програмиране > Раздел 5
Урок 4: Вектори- Въведение във вектори
- Предизвикателство: Пешеходец по вектор
- Повече векторна математика
- Предизвикателство: Лазерен меч
- Големина на вектора и нормализация
- Предизвикателство: Визуализация на големина
- Движение на вектор
- Предизвикателство: Спиране на кола
- Статични функции срещу методи
- Предизвикателство: Статични функции
- Интерактивно движение на вектор
- Предизвикателство: Следене на мишката
- Проект: Изчислителни същества
© 2024 Khan AcademyУсловия за ползванеДекларация за поверителностПолитика за Бисквитки
Повече векторна математика
Събирането наистина беше първата стъпка. Има много математически операции, които обикновено се използват с вектори. По-долу е пълният списък на операциите като функции в
PVector
обект от ProcessingJS. Ще преминем през някои от ключовите сега. С нарастването на сложността на примерите към последните раздели, ще продължим да разкриваме повече подробности за функциите.add()
— събира векториsub()
— изважда векториmult()
— скалира вектор с умножениеdiv()
— скалира вектор с делениеmag()
— изчислява големината на вектораnormalize()
— нормализира вектора до единица с големина 1limit()
— ограничава големината на векторheading2D()
— двуизмерното заглавие на вектор, изразено като ъгълdist()
—Евклидовото разстояние между два вектора (считани за точки)angleBetween()
— намира ъгъла между два вектораdot()
— точковото произведение на два вектораcross()
— произведението на кръст на два вектора (отнася се само за три измерения)
След като покрихме събирането, нека да започнем с изваждането. Това не е толкова зле; просто вземи знака плюс и го замени с минус!
Изваждане на вектори
може да бъде записано като:
и така функцията вътре в
PVector
изглежда по този начин:PVector.prototype.sub = function(vector2) {
this.x = this.x - vector2.x;
this.y = this.y - vector2.y;
};
Следващият пример демонстрира векторно изваждане като взима разликата между две точки – мястото на мишката и центъра на прозореца.
Основни числови свойства с вектори
Когато правим изчисления с реални числа, те се подчиняват на следните основни правила:
Комутативното правило:
Асоциативното правило:
Тези същите правила са верни и за математиката с вектори:
Комутативното правило:
Асоциативното правило:
Векторно умножение
Продължаваме с умножение и тук ще трябва да мислим по малко по- различен начин. Когато говорим за умножаване на вектор, обикновено имаме предвид скалиране на вектор. Ако искаме да скалираме вектор до два пъти или една-трета от размера му (като посоката му остане същата), бихме казали: "Да умножим вектора по 2" или "Да умножим вектора с 1/3." Обърни внимание, че умножаваме вектора скаларно – по число – а не по друг вектор.
За да мащабираме вектор, ние увеличаваме всеки компонент (x и y) скаларно.
може да се запише като:
Да разгледаме един пример с векторна нотация.
Следователно функцията вътре в обекта
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);
Още числови свойства на векторите
Както и при събирането, основните алгебрични правила за умножение важат за векторите.
Асоциативното правило:
Дистрибутивното правило с 2 скалара и 1 вектор:
Дистрибутивното правило с 2 вектора и 1 скалар:
Искаш ли да упражниш задачите с вектори? Можеш да научиш повече тук в Кан Академия в нашия раздел за Линейна алгебра: Вектори.
Курсът "Компютърни симулации на физични явления" е производeн на "Природата на кода" от Даниел Шифман, използвана от Creative Commons Attribution-NonCommercial 3,0 Unported License.
Искаш ли да се присъединиш към разговора?
Все още няма публикации.