Làm thế nào tôi có thể đảo ngược ảnh hưởng của ma trận biến đổi?


13

Gần đây tôi đã làm việc trên một trò chơi bằng cách sử dụng OpenGL và C ++ thông qua GLFW.

Trong trò chơi, tôi có một chiếc khinh khí cầu với một tháp pháo gắn trên nó. Khí cầu di chuyển xung quanh trong tọa độ không gian thế giới và tháp pháo 'theo sau' nó.

Tháp pháo có không gian tọa độ riêng cho hướng nhìn / ngắm của nó. Về cơ bản, khi tháp pháo nhắm theo hướng (0,0,1), nó nhắm song song với hướng khí cầu di chuyển.

Để cung cấp cho tháp pháo một mục tiêu không gian thế giới, tôi có một ma trận lấy tọa độ không gian thế giới và biến đổi chúng thành tọa độ không gian của tháp pháo.

Khi tháp pháo bắn, tôi muốn nó sinh ra các viên đạn trong không gian thế giới, vậy có cách nào hay không khi sử dụng ma trận biến đổi của tôi để chuyển đổi tọa độ không gian của tháp pháo trở lại không gian thế giới?

Một cách tổng quát hơn để đặt câu hỏi có thể là: nếu tôi có một ma trận Mlấy tọa độ từ không gian Asang không gian B. Có một cách dễ dàng để sử dụng Mđể có được tọa độ từ Bđến A?

Câu trả lời:


19

Vì vậy, miễn là các ma trận Mkhả nghịch (mà nó thường sẽ được, trừ khi bạn đang làm một cái gì đó rất không bình thường), sau đó tính toán ma trận nghịch đảo của Msẽ cung cấp cho bạn một ma trận mà những gì bạn muốn.

Đó là, nếu Mthực hiện một số biến đổi, inverse(M)thực hiện chuyển đổi "ngược lại".

Hầu hết các thư viện ma trận / vector cung cấp một phương tiện để tính toán nghịch đảo.


1
Câu hỏi thưởng (như bạn có vẻ như là một người sẽ biết câu trả lời): Liệu có bất kỳ ma trận biến đổi không thể đảo ngược nào tạo ra kết quả trực quan thú vị không?
dùng1306322

6
@ user1306322 Có thể. Chiếu vào một chiều thấp hơn (ví dụ bằng không tất cả các giá trị X) sẽ là một phép biến đổi không thể đảo ngược, vì bạn đang vứt bỏ các giá trị. Điều đó thú vị theo nghĩa là nó hữu ích, nhưng không phải là bạn sẽ nhận được kết quả thú vị. "Không thể đảo ngược" và "trực quan thú vị" là trực giao.
congusbongus

@congusbongus không! Chiếu từ 3D sang 2D là một bản hack tiêu chuẩn để có được bóng đổ trên các máy thu phẳng.
imallett

@ user1306322 Bạn có thể quan tâm đến bút giả Moore Moore Penrose
Tobias Kienzler

5

Nếu ma trận biến đổi của bạn là ma trận xoay thì bạn có thể đơn giản hóa vấn đề bằng cách lợi dụng thực tế là nghịch đảo của ma trận xoay là chuyển vị của ma trận đó.

Nếu ma trận biến đổi của bạn đại diện cho một vòng quay theo sau là một bản dịch, thì hãy xử lý các thành phần riêng biệt. Nghịch đảo tương đương với việc trừ đi bản dịch và sau đó áp dụng chuyển vị của ma trận xoay.


2

Trong ma trận lib của bạn có lẽ có một hàm gọi là nghịch đảo. Đó có lẽ là những gì bạn đang tìm kiếm.

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.