Параметрическая кривая
- From
- Anton Vdovichenko (2:5025/3.8)
- To
- Georgy Udov
- Date
- 2002-12-06T22:41:27Z
- Area
- RU.ALGORITHMS
Hello Georgy.
06 Dec 30 15:41, Georgy Udov wrote to Anton Vdovichenko:
AV>> гарантированно найти парметрические координаты точки на NURBS
AV>> поверхности - хотелось бы услышать.
GU> Стало быть мы занимаемся решением одинаковых задач :-)
GU> Скажи, а как ты сейчас ищешь параметрические координаты точки на
GU> NURBS-поверхности?
Ну там сейчас достаточная громоздкая процедура, состоящая из нескольких этапов :)
1) Вообще то я ищу координаты не по всей поверхности, а только на конутрах конкретного face'а, который этой поверхностью описывается, поэтому достаточно часто эти точки лежат на краях домена. Т.е. достаточно зафиксировать u=u0,u1 или v=v0,v1 и свести систему к уравнениям от одной переменной. Кстати некоторые уравнения системы могут зависить только от одной переменной и без фиксации u,v.
2) Если первым способом ничего не находится то решаю Ньютоном системы из двух уравнений (всего уравнения 3, поэтому пары будет тоже 3) для каждого интервала. Работает неплохо и достаточно быстро, если решение есть :) Но иногда это лажает - упорно сходится к каким то левым корням.
3) Если оба предыдущих способа не помогли, то используется метод, который годится только для полиномов степенью не выше 3. Смысл состоит в том, что для каждой степени разделяются переменные, а потом степень понижается методом на подобие Гаусса, в итоге получаем полином бешеной степени, но зато от одной переменной :) Способ конечно скоростью не блещет, но до него дело не часто доходит. Здесь нахождение решения теоретически гарантировано, но практически из-за потерь точности может облажаться...
Вообще то конечно ни один из этапов реально не гарантирует решения, но сейчас, после тщательной обработки напильником у меня это работает на всех примерах, которые я пробовал, поэтому эта проблема сейчас отошла на 3-й план, да и по скорости из общей задачи этот этап занимает доли процента. Но все равно хотелось бы узнать более прямой метод, если он есть :)
Anton
--- GoldED 2.50+
* Origin: ... (2:5025/3.8)