Có gì khác biệt / phức tạp / hữu ích về vectơ?


21

Hãy tha thứ cho tôi nếu đây không phải là một câu hỏi thực sự, nhưng đó là điều tôi thực sự bối rối.

Tôi liên tục nghe các nhà phát triển trò chơi khác nói về việc sử dụng vectơ rất hữu ích, nhưng cũng như mọi người bị đe dọa bởi toán học vectơ và vectơ có thể gây khó khăn. Tôi chưa bao giờ có xung quanh để tìm hiểu về họ.

Vì vậy, cuối cùng tôi đã xem Vector trên Wikipedia, và tôi đã rất ngạc nhiên. Trừ khi tôi bằng cách nào đó nhầm, một vectơ (vì đơn giản, nói là 2D), chỉ là tọa độ x và y. Nếu tôi đã hiểu lầm, xin vui lòng sửa chữa cho tôi.

Vì vậy, đây là câu hỏi của tôi: không có nghĩa là bất kỳ đại diện của hai (hoặc ba) tọa độ chiều là một vectơ? Nếu vậy, thì một vectơ và tọa độ là cùng một thứ. Và thật khó để tạo ra một trò chơi mà không sử dụng tọa độ, vậy các vectơ khó hiểu hoặc mới đối với người đã thực hiện bất kỳ số lượng lập trình trò chơi nào?

Đây là một cái gì đó tôi có thể sử dụng một số làm rõ trên. Bất kỳ trợ giúp được đánh giá cao.


5
Các vectơ khá đơn giản cho đến khi bạn bắt đầu thực hiện các phép quay trong 3D ... sau đó bạn cần các bậc bốn và chúng sẽ thổi bay tâm trí của bạn.
Alistair Buxton

Khái niệm về vector thực sự khó hiểu. Tôi đã hỏi trong môn toán, math.stackexchange.com/questions/429363 , math.stackexchange.com/questions/384927 nhưng không có câu trả lời rõ ràng. Đó là sự thất vọng thuần túy. Có thể là bạn có thể thêm vào nó.
Val

1
Với tất cả các tương tự xấu trong những câu trả lời này, không có gì lạ khi mọi người nhầm lẫn.
Alistair Buxton

Câu trả lời:


29

Đừng để một chuyên gia toán học nghe thấy bạn gọi các điểm vectơ hoặc tọa độ!

Một vectơ 2D có thành phần x và y , không phối hợp. Các vectơ không xác định vị trí, chúng xác định hướng và độ lớn.

Tôi không thể nói cho bạn tại sao mọi người bị đe dọa bởi họ, có thể là lý do tương tự mọi người bị đe dọa bởi toán học nói chung, bởi vì mọi người đều nói rằng thật khó trước khi họ biết bất cứ điều gì về nó!

Các vectơ và tọa độ không giống nhau. Chúng trông giống nhau, nhưng cách chúng được sử dụng rất khác nhau.

Tọa độ xác định một vị trí trên thế giới. Các vectơ xác định một hướng và độ lớn. Hai trong số chúng thường được sử dụng cùng nhau. Ví dụ:

Một nhân vật có vị trí và vận tốc. Vị trí là tọa độ và vận tốc là một vectơ. Thêm vận tốc vào vị trí sẽ di chuyển nhân vật theo hướng của vectơ ở khoảng cách được xác định bởi độ lớn của vectơ (lưu ý rằng độ lớn của vectơ là tốc độ, vì vậy điều này cho chúng ta một hướng và tốc độ).

Hoặc trong ví dụ này:

nhập mô tả hình ảnh ở đây

Hai nhân vật có vị trí và bắn laser là một vectơ. Một vectơ giữa hai vị trí là (3,1). Điều đó có nghĩa là nó di chuyển +3 dọc theo trục X và +1 dọc theo trục Y. Trường hợp cường độ có thể được tìm thấy với Sqrt ((X X) + (Y Y)).

Một tổng quan tốt về toán học vectơ có thể được tìm thấy trên blog Wolfire


7
Không chỉ các nhà toán học buồn bã khi ai đó gọi Vector là điểm hay tọa độ. Các nhà vật lý của chúng tôi cũng sẽ làm phiền bạn.
TASagent

2
+1 Nhưng nếu tôi chọn nit, vận tốc là một vectơ và tốc độ là độ lớn của vectơ đó.
Ergwun

2
@Val: Tôi sẽ không nói nó vô nghĩa. Nó giải quyết quan niệm sai lầm của câu hỏi rằng vectơ chỉ là tọa độ x và y. Làm cho câu trả lời chính thức hoặc chính xác hơn bằng cách đề cập đến 'các yếu tố của không gian vectơ' sẽ không giúp được ai ngoại trừ việc giúp giải thích lý do tại sao mọi người tìm thấy đại số vectơ đáng sợ.
Marcks Thomas

3
Các vectơ chỉ là một vị trí trong đó chúng cho bạn biết bạn sẽ ở đâu nếu bạn áp dụng chúng cho (0,0). Các vectơ có thể sửa đổi một vị trí, nhưng bản thân chúng không chứa thông tin vị trí. Tôi hiểu bạn đang nói gì. Tôi nghĩ rằng sự khác biệt mà chúng ta đang nói đến không có ý nghĩa đối với câu hỏi này. Đây là cách các vectơ được sử dụng trong phát triển trò chơi. Cảm ơn vì đầu vào của bạn.
MichaelHouse

4
@Val: bất kỳ bài giảng đại số tuyến tính tốt nào cũng sẽ đồng ý với Byte56: vectơ không giống như vị trí trong không gian . Nó làm cho tinh thần để thêm “3 dặm về phía bắc và 1 dặm về phía đông” đến “1 dặm về phía nam”; nhưng không có ý nghĩa gì khi thêm vào vị trí của Nhà Trắng và đặt vào vị trí của Lầu Năm Góc. Khi bạn sửa điểm tham chiếu là (0,0), bạn có thể sử dụng vectơ để xác định điểm và ngược lại, do đó, trong một số biểu diễn, chúng trông giống nhau; nhưng chúng khác nhau. Tóm tắt: so sánh không gian affine với không gian vector .
PLL

9

Tôi nghĩ rằng yếu tố hăm dọa có thể phát sinh khi bạn bắt đầu xử lý các hoạt động phức tạp hơn như chuẩn hóa, chấm và chéo sản phẩm và sử dụng nhiều hệ tọa độ có ma trận để chuyển đổi giữa chúng. Điều này không nhất thiết phải dễ hiểu lúc đầu, ngay cả khi bạn có nền hình học và đại số mạnh.

Ngoài ra, ít nhất là ở Mỹ, những người đã trải qua chuỗi toán học trung học điển hình đã quen với việc suy nghĩ về hình học về các đường, dốc, góc, v.v. Họ phải học những thứ đó ở một mức độ nào đó và học thay vào đó hãy nghĩ về các vectơ và ma trận. Không phải các khái niệm về đại số tuyến tính là như vậy, mà chúng là một tập hợp các khái niệm hơi khác so với các khái niệm được sử dụng trong hình học cổ điển, mà mọi người có thể đã học ở trường.


BTW, sự khác biệt giữa vectơ và điểm nằm trong các thao tác bạn có thể thực hiện trên chúng. Mặc dù cả hai đều được biểu diễn (trong một hệ tọa độ cụ thể) bằng một danh sách các thành phần và do đó trông "giống nhau", các thao tác được phép không giống nhau. Chẳng hạn, bạn có thể thêm hai vectơ hoặc nhân một vectơ với vô hướng. Bạn không thể làm điều đó với điểm - hoặc ít nhất, nó không có ý nghĩa gì để làm như vậy. Nhưng bạn có thể trừ hai điểm và kết quả là một vectơ từ điểm này sang điểm khác. Bạn cũng có thể thêm một điểm vào một vectơ để có một điểm mới.

Điểm và vectơ cũng hành xử khác nhau đối với các phép biến đổi. Cụ thể, các điểm có thể dịch, trong khi các vectơ thì không. Xem xét ví dụ về một vật chuyển động với một vị trí (điểm) và vận tốc (vectơ); nếu bạn dịch đối tượng sang một nơi khác, bạn thay đổi vị trí của nó, nhưng không thay đổi vận tốc của nó.

Trong thực tế, hơn nữa dòng lý luận này, không chỉ có vectơ; có những thực thể khác như covectorbivector , cũng có thể "trông giống" một vectơ về việc có một danh sách các thành phần trong một hệ tọa độ, nhưng hoạt động khác nhau về các hoạt động có sẵn và cách chúng phản ứng với các biến đổi. Tất cả đều thuộc về một lĩnh vực toán học gọi là đại số Grassmann . Ngoài ra, người ta có thể nói chung hơn và xem xét đại số tenxơ . Đây là công cụ tiên tiến mặc dù.


1
Một phần lớn sự nhầm lẫn của tôi là tại sao mọi người nghĩ rằng vectơ rất phức tạp, vì vậy điều này đã giúp ích. Có lẽ tôi thấy chúng đơn giản bởi vì tôi thực sự đã sử dụng hình học trong lập trình trước khi tôi học hình học ở trường trung học.
Starscape

1
Ví dụ về vị trí so với vận tốc được sử dụng trong một vài câu trả lời bị phá vỡ khi bạn có vị trí (điểm), vận tốc (vectơ) và gia tốc (vectơ). Nếu bạn thay đổi vận tốc, gia tốc không thay đổi, nhưng cả hai đều là vectơ. Sự khác biệt giữa vectơ và điểm, trong khi chính xác, là một sự phân tâm - trong thực tế tất cả các trò chơi lưu trữ các vị trí dưới dạng các vectơ hoàn toàn liên quan đến điểm gốc (có lẽ gián tiếp nếu sử dụng biểu đồ cảnh).
Alistair Buxton

1
@AlistairBuxton Tôi không tuân theo quan điểm của bạn - nếu bạn dịch hệ tọa độ của mình, thì vận tốc của vật thể cũng không thay đổi, nhưng nếu bạn xoay tọa độ, thì cả tốc độ và gia tốc sẽ bị xoay. Vì vậy, tôi không thấy bất cứ điều gì "phá vỡ".
Nathan Reed

2
@AlistairBuxton Và không có thứ gọi là "lưu trữ vị trí như vectơ". Trò chơi lưu trữ cả vị trí vectơ dưới dạng danh sách các thành phần vô hướng trong một hệ tọa độ cụ thể. Điều đó không làm cho họ giống nhau. Để thực hiện một sự tương tự: ints và float đều được lưu trữ dưới dạng một danh sách các bit nhị phân, nhưng có nghĩa là những thứ khác nhau và có các hoạt động khác nhau.
Nathan Reed

1
@Val Bạn hoàn toàn không có cơ sở. Một vectơ không phải là [vị trí p, vận tốc v]. Nó không có cả điểm và vận tốc bên trong nó. Đó chỉ là [vận tốc x, vận tốc y, vận tốc z] (đối với vectơ vận tốc). Vấn đề là đây là một loại điều khác với [vị trí x, vị trí y, vị trí z].
Nathan Reed

7

Các vectơ thực sự không phải là xấu. Chỉ có một chút toán học mà mọi người không quen thuộc.

Đầu tiên và quan trọng nhất, một Vector không đại diện cho một vị trí trong không gian. Đây là khái niệm rất quan trọng. Một vectơ đại diện cho một hướng, như 'Bắc' và cường độ. Trên bản đồ có tọa độ Math XY bình thường, 'North' sẽ là vectơ (0,1) (lên trên Trục Y). Điều này không nên nhầm lẫn với vị trí (0,1), là một đơn vị ở trên bất cứ nơi nào bạn đặt gốc. Một vectơ là một hướng và độ lớn .

Dịch chuyển (chuyển động) là một vectơ (như di chuyển hai đơn vị lên và một đơn vị Phải), Vị trí thì không.

Các vectơ, trong và của chính họ, không phải là những gì mọi người có vấn đề với. Thông thường đó là ma trận và hoạt động trên các vectơ.

Ví dụ: nếu bạn nhân một Vector với ma trận đặc biệt gọi là 'Ma trận quay', thì vectơ được xoay theo số lượng được chỉ định bởi ma trận. Ngoài ra, một số người có vấn đề với phép nhân Ma trận. Nhìn lên nếu bạn không quen thuộc với nó.

Hơn nữa, bạn có thể 'xếp chồng các ma trận (hoặc thao tác) này lại với nhau. Giống như Xoay 90 độ quanh trục X, sau đó Xoay 90 độ quanh trục Y. Nếu chúng ta gọi một Ma trận M đầu tiên và Ma trận thứ hai N, thì hoạt động sẽ là v * M * N. Tuy nhiên, phép nhân Ma trận không giao hoán, do đó không giống với v * N * M.

Trong lập trình Đồ họa, bạn thường xuyên thực hiện các thao tác phức tạp hơn trên các vectơ và các ma trận khác. Các biến đổi cho FoV và đặt tọa độ của bạn vào không gian màn hình, v.v ... Điều đó thực sự không tệ, nhưng nó có thể khiến những người mới sợ hãi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.