ძირითადი მასალა
კურსი: კომპიუტერული პროგრამირება > თემა 5
გაკვეთილი 4: ვექტორები- რა არის ვექტორი
- გამოწვევა: მოხეტიალე ვექტორი
- მეტი ვექტორული მათემატიკა
- გამოწვევა: ნათელდაშნა
- ვექტორის სიდიდე & ნორმალიზაცია
- გამოწვევა: სიდიდის ვიზუალიზაცია
- ვექტორების მოძრაობა
- გამოწვევა: მანქანის დამუხრუჭება
- სტატიკური ფუნქციები თუ პირველადი მეთოდები
- გამოწვევა: სტატიკური ფუნქციები
- ინტერაქტიული ვექტორების მოძრაობა
- გამოწვევა: გავედევნოთ მაუსს
- პროექტი: კომპიუტირებული არსებები
© 2024 Khan Academyგამოყენების პირობებიკონფიდენციალურობის პოლიტიკაშენიშვნა ქუქი-ჩანაწერებზე
მეტი ვექტორული მათემატიკა
შეკრება მხოლოდ პირველი ნაბიჯი იყო. არსებობს ბევრი მათემატიკური ოპერაცია, რომლებიც, ძირითადად, ვექტორების შემთხვევაში გამოიყენება. ქვემოთ მოცემულია იმ ოპერაციების სია, რომლებსაც ProcessingJS-ის
PVector
ობიექტი გვთავაზობს ფუნქციების სახით. ახლა გადავხედავთ ძირითად ფუნქციებს. მომდევნო სექციებში ჩვენი მაგალითების გართულებასთან ერთად გავაგრძელებთ სხვა ფუნქციების დეტალების გამხელასაც.add()
— ვექტორების შეკრებაsub()
— ვექტორების გამოკლებაmult()
— ვექტორის სკალირება გამრავლებითdiv()
— ვექტორის სკალირება გაყოფითmag()
— ვექტორის სიგრძის გამოთვლაnormalize()
— ვექტორის ნორმალიზაცია ერთეულოვან სიგრძეზეlimit()
— ვექტორის სიგრძის შეზღუდვაheading2D()
— ვექტორის 2-განზომილებიანი მიმართულება, რომელიც წარმოდგენილია კუთხედdist()
— ევკლიდური მანძილი ორ ვექტორს შორის (ჩათვლილია წერტილებად)angleBetween()
— ორ ვექტორს შორის კუთხის პოვნაdot()
— ორი ვექტორის სკალარული ნამრავლიcross()
— ორი ვექტორის ვექტორული ნამრავლი (რელევანტურია მხოლოდ 3 განზომილებაში)
შეკრება უკვე გავიარეთ, ახლა დავიწყოთ გამოკლება. ეს არც ისე რთულია; უბრალოდ, აიღეთ პლიუს ნიშანი და შეცვალით ის მინუსით!
ვექტორების გამოკლება
შეიძლება, ჩაიწეროს, როგორც:
ასე რომ, ეს ფუნქცია
PVector
-ში გამოიყურება შემდეგნაირად:PVector.prototype.sub = function(vector2) {
this.x = this.x - vector2.x;
this.y = this.y - vector2.y;
};
შემდეგი მაგალითი აჩვენებს ვექტორების გამოკლებას ორ წერტილს შორის სხვაობის აღებით — მაუსის ადგილმდებარეობასა და ფანჯრის შუა წერტილს შორის.
საბაზისო რიცხვითი თვისებები ვექტორებით
როდესაც ნამდვილ რიცხვებზე ვაკეთებთ ოპერაციებს, ისინი იცავენ შემდეგ წესებს:
გადანაცვლებადობის წესი:
ჯუფდებადობის წესი:
ეს წესები ჭეშმარიტია ვექტორების შემთხვევაშიც:
გადანაცვლებადობის წესი:
ჯუფდებადობის წესი:
ვექტორების გამრავლება
გადავდივართ გამრავლებაზე და აქ ოდნავ უფრო სხვანაირად ფიქრია საჭირო. როდესაც ვექტორის გამრავლებაზე ვსაუბრობთ, ძირითადად, ვგულისხმობთ ვექტორის სკალირებას. თუ ვექტორის სკალირება გვინდა მასზე ორჯერ უფრო დიდ ან 3-ჯერ უფრო მცირე ზომაზე (მისი მიმართულების შეუცვლელად), ვიტყვით: „გაამრავლეთ ვექტორი 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-ი ახლა არის 3-ჯერ უფრო დიდი და უდრის (-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 სკალარით:
გსურთ, ვექტორებზე ოპერაციებში ივარჯიშოთ? შეგიძლიათ, ისწავლოთ მეტი აქ, ხანის აკადემიაზე, პარაგრაფში „წრფივი ალგებრა: ვექტორები“.
ეს „ბუნებრივი სიმულაციების" კურსი ეფუძნება დანიელ შიფმენის წიგნს "კოდის ბუნებას", ის გამოყენებულია ლიცენზიით Creative Commons Attribution-NonCommercial 3,0 Unported License.
გსურთ, შეუერთდეთ დისკუსიას?
პოსტები ჯერ არ არის.