Tôi đang phát triển một trò chơi video độc lập và đã hoạt động theo giả định rằng bởi vì phím điều khiển trên bộ điều khiển của tôi có một dải chuyển động tròn, nó trả về các tọa độ "tròn"; có nghĩa là, tọa độ Descartes bị ràng buộc vào một khu vực hình tròn (bán kính 1). Trong thực tế, tọa độ là "hình vuông"; ví dụ: vị trí thumbstick trên cùng bên phải đăng ký dưới dạng x = 1, y = 1. Khi tôi chuyển đổi tọa độ từ Descartes sang cực, độ lớn có thể vượt quá 1 - có tác dụng là người chơi có thể di chuyển nhanh hơn theo đường chéo so với chiều dọc hoặc chiều ngang. Vì vậy, để làm rõ, tôi muốn ghi lại vị trí của một ngón tay cái tương tự về hướng và cường độ, trong đó độ lớn nằm trong khoảng từ 0 đến 1. Phím điều khiển trả về tọa độ trên mặt phẳng vuông, vì vậy chỉ cần chuyển đổi tọa độ từ Descartes đến cực là không đủ. Tôi nghĩ rằng tôi cần phải chuyển đổi tọa độ không gian, nhưng đó là nhấn các giới hạn của bộ não khỉ của tôi.Làm cách nào để chuyển đổi tọa độ trên một hình vuông thành các tọa độ trên một vòng tròn?
Trả lời
Xem Mapping a Square to a Circle. Ngoài ra còn có một hình ảnh đẹp cho việc lập bản đồ. Bạn nhận được:
xCircle = xSquare * sqrt(1 - 0.5*ySquare^2)
yCircle = ySquare * sqrt(1 - 0.5*xSquare^2)
Dựa trên hình ảnh, tôi nghĩ rằng đây là _exactly_ những gì tôi muốn. Cảm ơn bạn! – Metaphile
Chia từng giá trị theo độ lớn để chuẩn hóa tất cả các giá trị thành vectơ đơn vị, ví dụ:
magn = sqrt(x * x + y * y);
newx = magn > 1.0 ? x/magn : x;
newy = magn > 1.0 ? y/magn : y;
Tuy nhiên, điều này có thể có tác dụng cắt độ lớn thay vì bình thường cho các giá trị nội thất .. Đó là, bạn sẽ nhận được cùng một giá trị cho một bộ điều khiển đẩy "đầy đủ" vào phía trên bên trái và bộ điều khiển gần như được đẩy hoàn toàn vào cùng một hướng.
Tôi chắc chắn không muốn cắt độ lớn. Tôi đã có một deadzone. Cả hai cùng nhau sẽ làm giảm đáng kể phạm vi hiệu quả của chuyển động. Tôi nghĩ Eemeli có ý tưởng đúng. – Metaphile
Ánh xạ không phải là duy nhất. Có nhiều giải pháp khác cho câu hỏi này.
Ví dụ, lập bản đồ này cũng sẽ làm việc
u = x √ (x² + y² - x²y²)/√ (x² + y²)
v = y √ (x² + y² - x²y²)/√ (x² + y²)
nơi (u, v) là tọa độ đĩa tròn và (x, y) là tọa độ vuông.
Một bức tranh trị giá một nghìn chữ, vì vậy, dưới đây là một số hình ảnh minh họa tính không độc đáo của ánh xạ và nghịch đảo của nó.
For a C++ implementation
lập bản đồ khác này, hãy vào
http://squircular.blogspot.com/2015/09/fg-squircle-mapping.html
Xem http://squircular.blogspot.com để biết thêm hình ảnh về kết quả lập bản đồ.
Xem thêm "Analytical Methods for Squaring the Disc" cho bài báo thảo luận về các phương trình ánh xạ khác nhau với bằng chứng và dẫn xuất.
Tuyệt. Làm thế nào bạn tạo ra các số liệu (ngôn ngữ/thư viện)? – Praxeolitic
Tôi đã viết một chương trình xử lý hình ảnh đơn giản trong C++ sử dụng các phương trình ánh xạ khác nhau trên mỗi pixel. Xem liên kết đến liên kết mã mẫu. Libpng hữu ích khi đọc và ghi ra các tệp PNG –
- 1. MATLAB Làm cách nào để chuyển đổi tọa độ trục thành tọa độ pixel?
- 2. Làm cách nào để chuyển đổi tọa độ thế giới thành tọa độ camera?
- 3. Chuyển đổi tọa độ UIImageView Chạm vào Tọa độ UIImage
- 4. Vẽ hình vuông có tọa độ cực
- 5. Tọa độ vòng tròn thành mảng trong Javascript
- 6. Làm thế nào để chuyển đổi tọa độ từ WGS84 thành tọa độ trong một phép chiếu với PROJ.4?
- 7. Làm cách nào để chuyển đổi điểm 3D trên mặt phẳng thành tọa độ UV?
- 8. WPF: Chuyển đổi giữa các tọa độ màn hình và tọa độ WPF
- 9. Làm cách nào để vẽ tọa độ vĩ độ/kinh độ trên màn hình?
- 10. Làm cách nào để chuyển đổi tọa độ thành Latitude & Kinh độ?
- 11. Chuyển đổi độ dài/vĩ độ thành các tọa độ X/Y
- 12. Làm cách nào để dịch chính xác tọa độ pixel sang tọa độ canvas trong Android?
- 13. Chuyển đổi độ dài/vĩ độ thành các tọa độ X/Y
- 14. Chuyển đổi tọa độ thành tên địa điểm
- 15. Áp dụng pixel Tọa độ tọa độ màn hình
- 16. tọa độ GPS: 1km vuông xung quanh một điểm
- 17. Chuyển đổi CGPoint từ hệ tọa độ UIView sang hệ tọa độ CALayer
- 18. tọa độ hình chữ nhật sau khi chuyển đổi
- 19. Bắt tọa độ của một phần tử trên trang cuộn
- 20. Lấy tọa độ của một điểm từ mkmapview trên iphone
- 21. Làm cách nào để chuyển đổi các tọa độ ECI thành kinh độ và vĩ độ để hiển thị trên Bản đồ?
- 22. Tọa độ GPS theo độ để tính khoảng cách
- 23. Tìm tọa độ của một điểm trên đường
- 24. Cách chuyển đổi tọa độ Lớp Vector thành Bản đồ Vĩ độ và Kinh độ trong Phần mở rộng
- 25. Dịch giữa các tọa độ giữa màn hình và tọa độ
- 26. Làm cách nào để chuyển đổi các tọa độ cửa sổ tương ứng với một chế độ xem cụ thể?
- 27. Cách chính xác để animate Chế độ xem từ một tọa độ này sang tọa độ khác là gì?
- 28. OpenGL: Làm cách nào để tránh các lỗi làm tròn khi chỉ định tọa độ UV
- 29. WPF: Nhận tọa độ mới sau khi xoay vòng
- 30. Xem tọa độ của thành phố từ trên
Có chiếm diện tích "toàn bộ" hay không nó trả về tọa độ nằm trong thứ gì đó trông giống như một vòng tròn? Ví dụ.đảm bảo rằng bạn có thể (hoặc không thể) lấy độ lớn sqrt. –
(x, y) bạn nhận được gì với thanh thẳng lên? Ngoài ra, là thanh analog của bạn hoặc chuyển mạch? Bạn có thể nhận được các giá trị như (0,5,0,5) không? – Nosredna
Có, tọa độ được phân phối trên một hình vuông, kể cả các góc. – Metaphile