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

Nếu bạn đang sử dụng bộ lọc web, vui lòng kiểm tra lại xem bộ lọc có chặn hai tên miền *.kastatic.org*.kasandbox.org hay không.

Nội dung chính

Các phép toán khác liên quan đến vectơ

Phép cộng vectơ chỉ là bước đầu tiên. Còn rất nhiều phép toán khác liên quan đến vectơ mà ta cần tìm hiểu. Dưới đây là danh sách đầy đủ các phép toán dưới dạng phương thức đính kèm với đối tượng PVector trong ProcessingJS. Trong bài đọc này, chúng ta sẽ điểm qua một số phép toán chính. Với những bài đọc tiếp theo, chúng ta sẽ tìm hiểu chi tiết về từng hàm thông qua các ví dụ với độ khó tăng dần.
  • add() — cộng vectơ
  • sub() — trừ vectơ
  • mult() — phóng to/thu nhỏ vectơ thông qua phép nhân
  • div() — phóng to/thu nhỏ vectơ thông qua phép chia
  • mag() — tính độ lớn của vectơ
  • normalize() — chuẩn hóa vectơ thành vectơ đơn vị với độ lớn bằng 1
  • limit() — giới hạn độ lớn của vectơ
  • heading2D() — hướng của một vectơ trên mặt phẳng 2D, hiển thị dưới dạng số đo góc
  • dist() — khoảng cách Euclid giữa hai vectơ (trong trường hợp này, đối tượng vectơ tạm thời được coi là một điểm)
  • angleBetween() — tính góc giữa hai vectơ
  • dot() — tích vô hướng của hai vectơ
  • cross() — tích có hướng của hai vectơ (chỉ áp dụng trong không gian ba chiều)
Trong bài đọc trước, ta đã tìm hiểu về phép cộng vectơ. Tiếp theo, ta sẽ chuyển sang phần về phép trừ.

Phép trừ vectơ

w=uv
có thể được viết thành:
wx=uxvx
wy=uyvy
Như vậy, phần định nghĩa phương thức đính kèm đối tượng PVector tương ứng sẽ như sau:
PVector.prototype.sub = function(vector2) {
    this.x = this.x - vector2.x;
    this.y = this.y - vector2.y;
  };
Ví dụ dưới đây mô tả phép trừ vectơ bằng cách tính khoảng cách giữa hai điểm (điểm tại vị trí chuột và tâm của khung kết quả).
Các tính chất cơ bản của phép cộng vectơ
Phép cộng các số thực có những tính chất cơ bản sau:
Tính chất giao hoán: 3+2=2+3
Tính chất kết hợp: (3+2)+1=3+(2+1)
Những tính chất trên cũng đúng với với phép cộng vectơ:
Tính chất giao hoán: u+v=v+u
Tính chất kết hợp: u+(v+w)=(u+v)+w

Phép nhân một số với một vectơ

Ta có thể hình dung phép nhân một số với một vectơ cũng chính là phóng to/thu nhỏ vectơ đó. Nếu muốn phóng to vectơ lên gấp đôi hoặc thu nhỏ xuống một phần ba (hướng của vectơ giữ nguyên), ta sẽ nhân vectơ lần lượt với 2 hoặc 1/3.
Để nhân vectơ với một số, ta nhân hoành độ và tung độ (x và y) của vectơ với số đó.
w=un
có thể được viết thành:
wx=uxnwy=uyn
Phóng to/thu nhỏ vectơ
Dưới đây là ví dụ được trình bày với ký hiệu vectơ:
u=(3 ;7)n=3w=unwx=33wy=73w=(9 ;21)
Phần định nghĩa phương thức đính kèm đối tượng PVector được viết như sau:
PVector.prototype.mult = function(n) {
   this.x = this.x * n;
   this.y = this.y * n;
}
Sử dụng phương thức mult trong chương trình rất đơn giản:
var u = new PVector(-3,7);
// This PVector is now three times the size and is equal to (-9,21).
u.mult(3);
Chương trình dưới đây cũng tương tự như chương trình phía trên, trừ việc mỗi vectơ được nhân với 0,5 để độ lớn giảm xuống một nửa:
Thay vì nhân với 0,5 như trên, ta cũng có thể chia vectơ cho 2. Phép chia cũng được triển khai tương tự như phép nhân. Dấu nhân (*) cần được thay bằng dấu chia (/).
Dưới đây là cách định nghĩa phương thức "div" bên trong đối tượng:
PVector.prototype.div = function(n) {
   this.x = this.x / n;
   this.y = this.y / n;
}
Và đây là cách ta sử dụng phương thức "div" trong chương trình:
var u = new PVector(8, -4);
u.div(2);

Các tính chất cơ bản của phép nhân vectơ với một số

Tương tự như phép cộng, các tính chất cơ bản của phép nhân cũng đúng với vectơ.
Tính chất kết hợp: (nm)v=n(mv)
Tính chất phân phối với 2 số và 1 vectơ: (n+m)v=nv+mv
Tính chất phân phối với 2 vectơ và 1 số: (u+v)n=un+vn
Nếu muốn luyện tập thêm về các phép toán liên quan đến vectơ, bạn có thể xem bài học về vectơ trên Khan Academy.
Khóa học "Mô phỏng tự nhiên" này được biên soạn dựa trên cuốn "The Nature of Code" (tạm dịch: Bản chất của lập trình) của tác giả Daniel Shiffman, được sử dụng theo giấy phép Creative Commons Attribution-NonCommercial 3.0 Unported License.

Tham gia cuộc thảo luận?

Chưa có bài đăng nào.
Bạn có hiểu Tiếng Anh không? Bấm vào đây để thấy thêm các thảo luận trên trang Khan Academy Tiếng Anh.