Вы не говорите, как определена ваша поверхность, только то, что она ограничена двумя квадратичными кривыми Безье. Есть много способов построить такую поверхность, и каждый способ ее построения будет иметь разные горизонты. Так что этот ответ будет догадкой.
Горизонт состоит из тех точек на поверхности, где вектор от камеры к точке касается поверхности, как показано здесь:
![Касательная к кривой Безье](https://i.stack.imgur.com/3aq2i.png)
Квадратичная кривая Безье имеет параметрическое уравнение
B(t) = (1 − t)2 P0 + 2(1 − t )t P1 + t2 P2
дифференцирование этого по t дает нам касательную к кривой:
B′(t) = 2(t − 1) P0 + 2(1 − 2t) P1 + 2t P2
и это параллельно вектору от камеры (в начале координат) к кривой, если
B(t) × B′(t) = 0
Решите это для t, и вы получите точку на кривой на горизонте. Как вы можете расширить это до горизонта для всей поверхности, зависит от того, как построена ваша поверхность. (Может быть, вы можете просто найти точки горизонта для кривых на каждом конце поверхности и соединить их прямой линией?)
person
Gareth Rees
schedule
22.02.2009