Vectơ là gì?
Các vectơ là tập hợp các tọa độ có kích thước khác nhau. Mỗi tọa độ trong một vectơ đại diện cho một số vị trí tuyệt đối theo hướng không gian mà vectơ nằm trong.
- Vectơ 1-D sẽ là {1} . Điều này có thể, ví dụ, một vị trí tại X = 1. Hoặc thời gian t = 1.
- Một vectơ 2 chiều sẽ là {-4,3} . Ví dụ, đây có thể là một vị trí tại -4 trên trục X và 3 trên trục Y. Nó cũng có thể là nhiệt độ (3 độ) tại vị trí (-4 mét) trên trục X.
- Một vectơ 3 chiều sẽ là {1,2,3} . Đây có thể là một vị trí trong không gian 1 dọc theo trục X, 2 trở lại trên trục Y và 3 lên trên trục Z. Hoặc có thể là 1 màu đỏ, 2 màu xanh lá cây và 3 màu xanh lam trong một màu. Hoặc, đó có thể là vị trí XY ( {1,2} ) tại một thời điểm T ( {3} ).
Lưu ý rằng trong mọi trường hợp, chúng tôi đã gán ý nghĩa cho các vectơ cho vấn đề của chúng tôi. Mặc dù bạn thường thấy các vectơ được sử dụng cho hình học trong các trò chơi, không có lý do gì bạn không thể làm gì khác với chúng.
Tại sao tôi sử dụng vectơ?
Đầu tiên, bạn không bao giờ phải sử dụng vectơ. Miễn là bạn đang theo dõi x và y, hoặc bất kỳ tọa độ nào bạn quan tâm, theo một cách nào đó bạn vẫn ổn.
Tuy nhiên, lợi thế của việc sử dụng vectơ là chúng thể hiện gọn gàng những thứ như hướng và vị trí, và cũng có một số phép toán được xác định trên chúng giúp cuộc sống của bạn dễ dàng hơn.
Đối với một ví dụ đơn giản về những điều này, hãy xem xét các sản phẩm chấm .
Giả sử bạn có một hệ thống radar trong một trò chơi theo phong cách từ trên xuống. Mỗi kẻ thù xuất hiện trong khu vực của radar (một số nêm hình chiếc bánh ở dạng 2D) sẽ có một chấm đỏ nhỏ trên màn hình của bạn. Vì vậy, bạn cần tìm ra kẻ thù trong phần radar của bạn.
Bạn có thể kiểm tra nếu kẻ thù ở trong một hình tam giác. Bạn cũng có thể kiểm tra xem kẻ thù có nằm trong giao điểm của hai nửa không gian của các mặt phẳng / đường thẳng xác định hai phía của khu vực radar hay không.
Hoặc, bạn chỉ có thể sử dụng một sản phẩm chấm để kiểm tra. Đây là cách thực hiện:
- Tạo một vectơ đi từ trung tâm của radar ra phía trước "phía trước của radar". Bình thường hóa nó.
- Tạo một vectơ đi từ trung tâm của radar ra phía đối tượng mà chúng ta muốn kiểm tra khả năng hiển thị của radar. Bình thường hóa nó.
- Lấy sản phẩm chấm của hai vectơ chuẩn hóa.
- Lấy arccosine của sản phẩm đó và kiểm tra xem nó có nhỏ hơn một nửa góc của chiều rộng của radar không. Nếu có, hãy vẽ một đốm sáng.
Điều này rất tiện dụng và giờ đây cũng cho phép bạn dễ dàng có các radar hướng theo các hướng khác nhau (chỉ thay đổi vectơ chuyển tiếp) và có độ rộng khác nhau (chỉ thay đổi góc độ rộng của radar) - và bạn cũng có thể sử dụng lại cùng một mã cho các trường hợp đó !
Tại sao tôi lại sử dụng vectơ?
Nếu bạn ở dạng 2D, có lẽ cách tốt nhất để đạt được các hiệu ứng và chuyển động phức tạp (quay, thu nhỏ, v.v.) là sử dụng biểu đồ cảnh. Một hành tinh có một con tàu quay quanh, con tàu có một máy bay không người lái quay quanh. Tính toán cho việc này mà không sử dụng toán vector là thực sự, thực sự xấu xí.
Với toán học vectơ, chúng tôi đại diện cho mỗi người có một điểm và ma trận biến đổi 3x3. Hành tinh sử dụng biến đổi của nó, con tàu sử dụng biến đổi của nó và biến đổi của hành tinh, và máy bay không người lái sử dụng biến đổi của nó và biến đổi của con tàu và biến đổi của hành tinh.
Khi hành tinh di chuyển, bạn thay đổi sự biến đổi của nó, và con tàu và máy bay không người lái sẽ tự động được định vị "miễn phí". Mã sạch hơn nhiều.
Vẫn không thuyết phục.
Các vectơ cũng là đại diện gốc cho vị trí, hình học và chuyển động được sử dụng bởi gần như tất cả các thư viện đồ họa - và chắc chắn là OpenGL và DirectX. Bạn không có khả năng thoát khỏi mà không phải sử dụng chúng.
Kết luận
Các vectơ là một công cụ mạnh mẽ để viết mã rõ ràng giúp giải quyết các vấn đề hình học một cách sạch sẽ và thanh lịch.