私はレイ トレーサーの計算を研究していますが、この件に関して読んだほぼすべての記事で行われている遷移に従っているわけではありません。これは私が持っているものです:
球の式:
(X - Cx)^2 + (Y - Cy)^2 + (Z - Cz)^2 - R^2 = 0
ここで、R は半径、C は中心、X、Y、Z は球のすべての点です。
線の式:
X + DxT、Y + DyT、Z + DzT
ここで、D は線の正規化された方向ベクトル、X、Y、Z は線上のすべての点、T は線上のある点のパラメータです。
直線の成分を球の方程式に代入すると、次のようになります。
(X + DxT - Cx)^2 + (Y + DyT - Cy)^2 + (Z + DzT - Cz)^2 - R^2 = 0
私はその時点まですべてをフォローしていますが(少なくとも私はそうしていると思います)、私が読んだすべてのチュートリアルは、それを説明せずにそこから2次方程式にジャンプします(これはサイトの1つからコピーされているため、用語は私の例とは少し異なります):
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 を解く方法を取得しますが、上記の式から二次方程式に到達する方法がわかりません。それは私が長い間忘れていた一般的な数学の知識の一部にすぎないと思いますが、「二次方程式の設定方法」をグーグルで調べても、実際には何も得られませんでした.
完全に理解できないコードを書くのは好きではないので、先に進む前にこのステップに到達する方法を理解したいと思っています。