Tôi đang nghiên cứu toán học cho trình theo dõi tia, nhưng tôi không theo dõi quá trình chuyển đổi được thực hiện chỉ trong mỗi bài viết tôi đã đọc về chủ đề này. Đây là những gì tôi có:Làm thế nào để thiết lập phương trình bậc hai cho giao điểm ray/cầu?
Formula cho một quả cầu:
(X - Cx)^2 + (Y - Cy)^2 + (Z - Cz)^2 - R^2 = 0
Trong đó R là bán kính, C là tâm và X, Y, Z là tất cả các điểm trong hình cầu.
Formula cho một dòng:
X + DxT, Y + DyT, Z + DZT
trong đó D là một vector hướng bình thường hóa cho các dòng và X, Y, Z là tất cả các điểm trên line, và T là một tham số cho một số điểm trên dòng.
Bằng cách thay thế các thành phần của dòng vào phương trình mặt cầu, chúng tôi nhận được:
(X + DxT - Cx)^2 + (Y + DyT - Cy)^2 + (Z + DZT - Cz)^2 - R^2 = 0
Tôi làm theo mọi thứ cho đến thời điểm đó (ít nhất là tôi nghĩ), nhưng sau đó mọi hướng dẫn tôi đã đọc sẽ chuyển từ đó sang phương trình bậc hai mà không giải thích nó (điều này được sao chép từ một trong các trang web, vì vậy các cụm từ hơi khác so với ví dụ của tôi):
A = Xd^2 + Yd^2 + Zd^2
B = 2 * (Xd * (X0 - Xc) + Yd * (Y0 - Yc) + Zd * (Z0 - Zc))
C = (X0 - Xc)^2 + (Y0 - Yc)^2 + (Z0 - Zc)^2 - Sr^2
Tôi nhận được cách giải quyết T bằng cách sử dụng công thức bậc hai, nhưng tôi không hiểu làm thế nào họ nhận được phương trình bậc hai từ các công thức trên. Tôi cho rằng đó chỉ là một phần của kiến thức toán phổ biến mà tôi đã từ lâu quên, nhưng googling cho "Làm thế nào để thiết lập một phương trình bậc hai" đã không thực sự mang lại bất cứ điều gì một trong hai.
Tôi thực sự muốn hiểu cách thực hiện bước này trước khi tiếp tục, vì tôi không thích viết mã mà tôi không nắm bắt đầy đủ.
Đó là một chút khó đọc tất cả các biểu tượng. Tôi nghĩ rằng tôi biết làm thế nào để trả lời câu hỏi của bạn, nhưng bạn có thể chỉ cho tôi một trong những hướng dẫn mà bạn đang gặp rắc rối với để tôi có thể cung cấp một số bối cảnh? Ngoài ra, bạn đã không hoàn thành câu ở giữa câu hỏi: "X, Y, Z là tất cả các điểm trên đường dây, và T là ...". –
http://www.siggraph.org/education/materials/HyperGraph/raytrace/rtinter1.htm http://www.codeproject.com/KB/graphics/Simple_Ray_Tracing_in_C_.aspx Có một phần ba, nhưng tôi không nghĩ rằng html cho trang web đang được hiển thị đúng, và một số phần của phương trình dường như bị thiếu, vì vậy tôi bỏ qua điều đó. Tôi vừa sửa xong câu chưa hoàn thành. –
Câu hỏi có thể rõ ràng hơn nếu bạn phân biệt giữa X, Y, Z trong công thức cho một hình cầu (biến không xác định) và X, Y, Z trong công thức cho dòng (điểm đã biết trên dòng). Khi bạn thay thế đường thẳng vào hình cầu, bạn chuyển đổi từ một cặp phương trình với X, Y, Z và T chưa biết thành một phương trình với chỉ T chưa biết (có thể được giải quyết), nhưng sử dụng X, Y, Z trong phương trình thay thế chỉ ra rằng đây vẫn là những ẩn số. –