Tôi đang viết một ứng dụng iPhone dựa trên opengl và muốn cho phép người dùng dịch xung quanh chế độ xem dựa trên hướng họ di chuyển hai ngón tay trên màn hình. Đối với một ngón tay tôi biết tôi chỉ có thể tính toán vector từ vị trí bắt đầu đến vị trí hiện tại của ngón tay người dùng và sau đó tìm vector đơn vị này để chỉ hướng, nhưng tôi không biết làm thế nào tôi sẽ làm điều này cho hai ngón tay, tôi không nghĩ rằng việc thêm các thành phần của các vectơ và tính toán mức trung bình sẽ làm việc nên tôi bị kẹt khá nhiều.Làm cách nào để tính hướng trung bình của hai vectơ
Trả lời
Vector toán hoạt động giống như bạn nghĩ:
v3 = (v1 + v2)/2
// so:
v3.x = (v1.x + v2.x)/2;
// same for Y and Z
thêm chúng và chia bởi hai không làm việc
Dễ dàng thí nghiệm tưởng tượng: Bạn nó cho vectơ đơn vị trong x và y. Trực giác bạn có thể hình dung rằng "trung bình" sẽ là một vector đơn vị ở một góc 45 độ lên và bên phải. Đó là chính xác những gì sẽ xảy ra. Thử nghiệm tư tưởng cho thấy rằng bạn cần bình thường hóa mức trung bình theo độ lớn của nó để có được một vector đơn vị. Tôi khuyên bạn nên làm như vậy.
Nếu bạn chỉ quan tâm trong chỉ đạo, Bạn nên thêm họ và chuẩn hóa vector kết quả,
(v1 + v2)/abs(v1 + v2)
Thông thường nó là tốt hơn để nhân hơn phân chia vì lý do tốc độ khi làm đồ họa lập trình vì vậy tôi muốn giới thiệu này :
v3 = (v1 + v2) * 0.5f;
Chẳng phải công cụ này sẽ được trình biên dịch tối ưu hóa sao cho '/ 2.0' giống với' * 0.5'? –
Có, ít nhất là từ kinh nghiệm của tôi với các trình biên dịch C điển hình. Đó là một câu chuyện khác nếu bạn có một biến số không đổi, hãy nói một vòng lặp dài hơn trong đó bạn chia một cái gì đó cho nó. Sau đó, tôi có thể đo lường sự khác biệt nếu bạn tính toán một biến mới (nghịch đảo) và nhân trong vòng lặp. Tối ưu hóa các trình biên dịch được cải thiện khá nhanh chóng. – oli
Xin lỗi, nhưng điều này là sai. Trong thế giới vector, "trung bình" theo nghĩa các thành phần trung bình nghĩa là không có gì. Hãy tưởng tượng (-1 0) và (1 0) -> trung bình = 0 0 ;-)
không dễ dàng như bạn thấy: bạn phải sử dụng nội suy slerp để tìm nửa cung trên quả cầu đơn vị: http://en.wikipedia.org/wiki/Slerp Chiều sâu tại đây: http://www.essentialmath.com/index.htm
Về mặt kỹ thuật có, nhưng đối với các vectơ đơn vị, Slerp có trọng số bằng nhau sẽ giảm xuống mức trung bình + đơn giản hóa. –
Để hiểu trực giác, bạn có thể vẽ hai vectơ xuống. Sau đó vẽ một đoạn thẳng giữa các điểm cuối của hai điểm. Điểm giữa của phân đoạn này là vectơ trung bình. Điều này phù hợp với bất kỳ số thứ nguyên nào.
- 1. Tính góc hướng từ hai vectơ?
- 2. Làm cách nào để có được trung bình (trung bình) của các cột được chọn
- 3. Làm cách nào để tính toán vectơ bình thường của một đoạn đường?
- 4. Làm cách nào để tính toán độ tương tự cosin của hai vectơ?
- 5. Làm cách nào để chỉ định hướng nào để làm tròn trung bình của hai phao nổi khác với LSB của tên miền?
- 6. Tính trung bình trong Ruby
- 7. Trong clojure, một cách hiệu quả để tính toán trung bình của vectơ số nguyên là gì
- 8. Làm cách nào để tính giá trị trung bình của một cột
- 9. Cách tính giá trị màu rgb trung bình của bitmap
- 10. hai chiều di chuyển trung bình?
- 11. Tính trung bình trong C#
- 12. trung bình của hai góc với bọc xung quanh
- 13. Làm cách nào để tính toán mức trung bình di động theo số mũ trên postgres?
- 14. Tính trung bình hàng tháng của ts đối tượng
- 15. Tính trung bình di chuyển trong C++
- 16. Tính trung bình hàng ngày trong R
- 17. trung bình của các bộ
- 18. Tính trung bình của cột từ truy vấn MYSQL
- 19. awk tính toán trung bình hoặc không
- 20. Tính trung bình di chuyển trong F #
- 21. tính trung bình của ba số được mã hóa
- 22. Làm thế nào để vượt qua na.rm = TRUE để thuận lợi khi tính trung bình?
- 23. Cách tính trung bình có trọng số trong R?
- 24. Làm cách nào để tính toán một trung tâm 3D?
- 25. cách tính và sử dụng giá trị trung bình cvMat
- 26. cách tính trung bình từ mảng int2 sử dụng Thrust
- 27. Làm cách nào để duy trì định hướng hàng/cột của vectơ ở dạng khối u?
- 28. tính trung bình sử dụng awk từ nhiều tệp
- 29. làm thế nào để tính toán một đường trung bình gia quyền sử dụng gấu trúc
- 30. Cách tính thời gian chờ trung bình và thời gian quay vòng trung bình trong lập lịch SJF?
Chia cho số không! –
let v1! = V2 ... – RickyA
nếu chỉ quan tâm đến hướng, v1 và v2 phải được chuẩn hóa trước. – pikaille