ich je hatte für das Debuggen von Grafik-Code in 3D-Spielen, ähnliche Dinge zu tun. Ich fand die einfachste Art, darüber nachzudenken, die Vektoren zu erstellen, die die Ecken des Bildschirms darstellen, und dann den Schnittpunkt mit allen relevanten Objekten zu berechnen (in diesem Fall eine Ebene).
Werfen Sie einen Blick auf Ihre Ansichtsprojektion (oder wie auch immer der Matrixstack Ihrer Kamera aussieht, multipliziert) und realisieren Sie, dass der Bildschirmbereich Ecken mit homogonisierten Koordinaten von (-1, -1), (-1, 1), (1, -1), (1, 1)
aufweist. Wenn Sie dies wissen, haben Sie eine freie Variable und können nach dem Vektor suchen, der die Ecke der Kamera darstellt.
Obwohl dies ein Schmerz ist. Es ist viel einfacher, einen Vektor für jede Ecke zu konstruieren, als ob die Kamera nicht gedreht oder übersetzt würde, und sie dann durch die Ansichtsmatrix zu transformieren, um Ihnen Weltraumvektoren zu geben. Dann können Sie den Schnittpunkt zwischen den Vektoren und der Ebene berechnen, um Ihre vier Ecken zu erhalten.
Ich habe einen Tagesjob, also überlasse ich Ihnen die Mathematik. Einige Links, die dabei helfen können, aber:
Angle/Field of view calculations
Line plane intersection