Tôi muốn chiếu Đa giác của tôi dọc theo vectơ tới mặt phẳng trong không gian 3d. Tôi tốt nhất nên sử dụng một ma trận chuyển đổi đơn để làm điều này, nhưng tôi không biết làm thế nào để xây dựng một ma trận loại này.Làm thế nào để chiếu một đa giác phẳng trên mặt phẳng trong không gian 3d
Với
- các thông số của máy bay (ax + by + cz + d),
- thế giới phối của Polygon tôi. Như đã nêu trong dòng tiêu đề, tất cả các đỉnh của đa giác nằm trong một mặt phẳng khác.
- vector hướng dọc theo đó dự án Polygon của tôi (hiện vector bình thường máy bay của của đa giác)
mục tiêu -a 4x4 ma trận chuyển đổi, thực hiện các dự báo cần thiết,
hoặc
- một số thông tin chi tiết về cách tự xây dựng một mình
CẬP NHẬT
Cảm ơn bạn đã trả lời, nó hoạt động như dự kiến. Một lời cảnh cáo với những người đã tìm thấy điều này: Nếu Mặt phẳng chiếu bình thường song song với vector chiếu, mẫu số D sẽ trở thành (gần như) 0, để tránh những điều lạ xảy ra, một số loại xử lý cho trường hợp đặc biệt này là cần thiết. Tôi giải quyết nó bằng cách kiểm tra nếu D < 1e-5, và nếu như vậy, chỉ cần dịch đa giác của tôi cùng với vector đùn hte.
Cảm ơn bạn đã giải pháp hoàn chỉnh. Tôi sẽ thử ngay lập tức – sum1stolemyname
Tôi đã triển khai giải pháp của bạn. Tuy nhiên, tôi đã gặp rắc rối khi vector hướng của tôi là (1 | 0 | 0) và mặt phẳng ở góc 45 °: Xem bên: '| ---->/'ở đâu | là Đa giác và/là mặt phẳng để phóng. Trong trường hợp này, một * dx/D = 1, trong đó hai mục nhập khác trong cột đầu tiên là 0 (dy = dzt = 0). điều này dẫn đến toàn bộ coumn là 0, có hiệu quả mở rộng đa giác của tôi thành 0. Ứng dụng của tôi không thích điều đó. Bạn có biết cách giải quyết vấn đề này không? – sum1stolemyname
@ sum1: Cột đầu tiên bằng 0 có nghĩa là tọa độ x của các đỉnh gốc sẽ bị bỏ qua. Điều này được mong đợi vì hướng chiếu của bạn song song với trục x. Nó sẽ không mở rộng đa giác của bạn thành 0. – interjay