evovch / Useful

Different useful pieces of code
0 stars 1 forks source link

VisuEngine Test4 intersection of a B-spline surface with a ray #3

Open evovch opened 5 years ago

evovch commented 5 years ago

Главная задача. Луч задан как начальная точка и направление. Реализовать нахождение ближайшего от начальной точки пересечения луча с B-сплайн поверхностью. В качестве разминки сначала можно решить аналогичную задачу для поверхностей Безье. Данная задача осложнена тем, что пересечений может быть несколько, а найти нужно именно одно ближайшее. Аналитически для произвольной B-сплайн поверхности задача не решается, поэтому необходимо продумать решение с помощью численного метода. Численный метод "сваливается" в какое-то значение в зависимости от начального приближения. На данный момент мне не видится способ выбрать такое начальное приближение и численный метод, чтобы гарантированного получить именно желаемое решение. Поэтому нужно применять хитрости. Похоже, что имеются работы, преодолевающие описанную сложность. Например: https://www.cs.utah.edu/~shirley/papers/raynurbs.pdf https://hal.inria.fr/hal-01268109v2/document