2012-06-01 21 views
6

Tôi đang xem lớp chuyển động lõi CMAttitude, nó có thể biểu thị hướng của thiết bị dưới dạng ma trận quay 3x3. Đồng thời tôi đã xem xét số CATransform3D, đóng gói thái độ của khung nhìn, cũng như mở rộng quy mô. CATransform3D là ma trận 4x4.CMAttitude và CATransform3D có liên quan đến ma trận quay không?

Tôi đã thấy ma trận xoay OpenGL là 4x4 và chỉ đơn giản là 0001 đệm trong hàng và cột thứ 4.

Tôi đang lang thang nếu ma trận quay của CMAttitude có liên quan đến ma trận của CATransform?

Tôi có thể sử dụng xoay thiết bị trong không gian thu được qua ma trận quay để chuyển UIView bằng CATransform3D không? Ý định của tôi là cho phép người dùng di chuyển điện thoại và áp dụng cùng một biến đổi cho UIView trên màn hình.

Câu hỏi bổ sung: nếu chúng có liên quan, làm cách nào để chuyển đổi ma trận quay của CMAttitude thành CATransform3D?

Trả lời

4

Con quay hồi chuyển được sử dụng để xác định chỉ hướng của thiết bị trong không gian. Có nhiều cách để tham số hóa chính định hướng (xem thông tin về nhóm SO(3) cho thông tin lý thuyết) - quaternions, góc Euler và ma trận 3x3 là một trong số chúng.

Việc "nhúng" ma trận 3x3 vào ma trận 4x4 không phải là mẹo dành riêng cho GL. Nó là một "semi-direct product" của nhóm các bản dịch (đó là đẳng cấu cho tất cả các vector 3D) và nhóm các phép quay (SO (3) đã đề cập ở trên).

Để lấy ma trận CATransform3D từ CMAttitude, bạn phải giả sử một số vị trí của đối tượng của bạn. Nếu đó là số không, sau đó chỉ cần pad ma trận với 0001 như bạn đã nói.

Câu hỏi này có thể bạn quan tâm: Apple gyroscope sample code

+0

Cảm ơn bạn đã trả lời rất nhiều thông tin! –

+0

Bạn được chào đón :) Tôi hy vọng câu trả lời không quá lý thuyết :) –