Lấy vector hướng dòng nước từ vector nước bình thường


8

Tôi bị mắc kẹt khi phát triển một chi tiết quan trọng của nước trò chơi của tôi: Làm cho nó chảy xuống!

Xem xét một thế giới 3D điển hình trong nước có xu hướng đi về phía trọng lực g=(0,-1,0)và có sự bình thường của mặt nước n=(x,y,z), làm thế nào tôi có thể tính toán, dựa vào đó, vectơ hướng dòng nước?

Ví dụ, hãy xem xét biểu đồ được thực hiện kém này (trong 2D, mặc dù)

Biểu đồ dòng nước

Cập nhật: Tôi đang xem xét một mặt nước rất đơn giản (Chỉ là một mặt phẳng: Không gợn sóng, không sóng, không áp lực, v.v.). Nếu bất kỳ điều nào cần được áp dụng, câu trả lời sẽ phụ thuộc vào nhiều yếu tố hơn là chỉ bình thường.

Câu trả lời:


13

Một cách để làm điều đó, xem xét bạn muốn có một góc 90 °, là tìm sản phẩm chéo của bình thường và trọng lực, bình thường hóa nó, sau đó vượt qua nó với bình thường một lần nữa.

Trong sơ đồ của bạn, chữ thập đầu tiên sẽ tạo ra một vectơ chỉ vào màn hình và chữ thập thứ hai sẽ tạo ra vectơ dòng chảy.

Một tác dụng phụ thú vị của việc sử dụng các sản phẩm chéo là vectơ dòng chảy sẽ càng dài thì vectơ bình thường càng xa khỏi phương thẳng đứng, có thể được sử dụng cho tốc độ dòng chảy?

Điều này giả định rằng bạn đang sử dụng hệ tọa độ thuận tay phải, nếu hệ thống của bạn là tay trái, vectơ trung gian sẽ chỉ ra khỏi màn hình, nhưng vẫn sẽ tạo ra kết quả tương tự.


Vâng, điều đó có vẻ tuyệt vời. Thậm chí nó trông rất đơn giản khi được giải thích, tôi đã dành nửa giờ để suy nghĩ về những cách làm (sai) khác nhau và tôi đã hoàn toàn bỏ qua cách này. Cảm ơn!
Ivelate

Điều này sẽ không tạo ra bất cứ thứ gì giống với những gì bạn thường nghĩ là một hướng của dòng chảy. Để xem lý do tại sao hãy xem xét các quy tắc bề mặt của một con sông chảy qua bản đồ của bạn sẽ như thế nào và chúng sẽ khác nhau như thế nào trong một dòng sông chảy từ đông sang tây và tây sang đông (tức là không phải vậy).
Jack Aidley 30/03/2016

1
Điều gì xảy ra nếu bình thường và trọng lực là (chống) song song? Tôi không thể giúp nhưng không có ý nghĩa trong câu trả lời này. Như @JackAidley đã nói, có vô số hướng dòng chảy có thể được đưa ra bình thường.
Margaret Bloom

1
Với mô hình đơn giản được trình bày trong câu hỏi, tôi tin rằng câu trả lời này sẽ tạo ra vectơ mà họ đang tìm kiếm. @Margaret Nếu các vectơ (chống) song song thì vectơ dòng chảy sẽ là (0,0,0) sẽ là dòng chảy dự kiến ​​trong một vùng nước phẳng, tức là ao / hồ
KingPin

@KingPin: Một dòng sông cũng là một vùng nước phẳng và hầu hết các hồ đều chảy ra sông.
Jack Aidley

1

Bạn không thể xác định hướng của dòng nước từ quy tắc bề mặt của nó, bạn sẽ cần lưu trữ dữ liệu bổ sung.

Một chuyến đi đơn giản để nhìn vào một dòng sông là đủ để thuyết phục bạn về điều này. Bất kỳ sự khác biệt nào trong các quy tắc bề mặt chỉ phản ánh sự gợn sóng trên bề mặt, khối lượng nước tiếp tục chảy theo cùng một hướng. Nhưng lý do cơ bản là vì bình thường xác định một mặt phẳng và bạn cần một vectơ dòng chảy. Các vectơ của bạn là về hình dạng của bề mặt chứ không phải chuyển động của nước.


1
Đúng, bạn đúng. Tôi đã xem xét chỉ là một cơ thể nước rất đơn giản (Không gợn sóng, không sóng, không áp lực, v.v.), nhưng chắc chắn trong cuộc sống thực, phép tính này sẽ không đơn giản như vậy. Tôi sẽ cập nhật câu hỏi để làm cho những chi tiết rõ ràng. Cảm ơn vì đầu vào của bạn!
Ivelate 30/03/2016
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.