Làm thế nào tôi có thể có được vectơ bình thường cho một mặt phẳng từ một tập hợp các đỉnh?


9

Tôi đang làm việc với một dự án nhỏ của HLSL / C ++ để xử lý công việc đồ họa của mình và tôi không chắc chắn làm thế nào tôi có được một vectơ đối diện từ một đa giác đỉnh. Tôi dường như không thể tìm thấy công thức.

Các vị trí là P1, P2, P3

Ví dụ, hãy gọi chúng là lớp VertexPoint với P1.x, P1.y, P1.z?


câu hỏi liên quan chặt chẽ: gamedev.stackexchange.com/questions/11520/ cấp
jhocking

Chỉ cho chính xác, nhãn trong tiêu đề hình ảnh và câu hỏi phải là " vectơ bình thường " thay vì "vectơ chuẩn hóa". Tất nhiên, bản thân vectơ bình thường có thể được chuẩn hóa (độ dài của nó là sự thống nhất), nhưng không cần thiết, và sản phẩm chéo sẽ không tạo ra một vectơ chuẩn hóa theo mặc định.
jjmontes

1
Googling "tam giác vector bình thường", đó là điều hiển nhiên đối với Google, mang lại vô số lượt truy cập. 1 , 2 , 3 , 4 , 5 , 6 , ...
imallett

... 7 , 8 , 9 , 10 , 11 , 12 , 13 , ...
imallett

2
... 14 , 15 , 16 , 17 ... Mỗi một trong số này (và vô số người khác) trả lời câu hỏi và một số thậm chí thực sự có mã C ++ / HLSL mong muốn. Nghiêm túc. Câu hỏi này đã bị đánh đến chết, gọi nó là "trùng lặp" là không đủ. "Tôi dường như không thể tìm thấy công thức" ass ass của tôi bạn đã không thử .
imallett

Câu trả lời:


28

Bạn có thể dễ dàng tìm thấy bình thường bằng cách tính hai vectơ, V1 = P2-P1 và V2 = P3-P1, sau đó tìm sản phẩm chéo N = V1 x V2. Sau đó, bạn bình thường hóa N. Tùy thuộc vào thứ tự của các đỉnh (theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ), bạn sẽ có được một mặt trước hoặc mặt sau bình thường.

Bạn cũng cần đảm bảo rằng ba ba điểm không được căn chỉnh, nếu chúng là bạn phải chọn một điểm khác.

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.