|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Дек 29, 2003 23:09:39 Sm_Andrei да но почему почти любая окружность которую я вижу на мониторе все таки кривая безье |
|
|
Дата: Дек 30, 2003 05:03:02 Sm_Andrei Если не хочешь чтобы были эти изломы, то у тебя точки A3,A4,A5 должны лежать на одной прямой. Так ведь в этом то и дело. На координаты точек не должны накладываться никакие ограничения. Их расположение друг относительно друга произвольно. |
|
|
Дата: Дек 30, 2003 07:16:08 vdk А где это такое? В каком приложении? Toxic На то она и кривая Безье, что можно создать кривую любого вида с изломами и без. Нет ограничений. Если хочешь, чтобы изломов не было и те 3 точки не лежали на одной кривой, то в месте излома можно повысить уровень детализации и расположить там побольше кривых. |
|
|
Дата: Дек 30, 2003 09:16:51 · Поправил: heXone Так ведь в этом то и дело. На координаты точек не должны накладываться никакие ограничения. Их расположение друг относительно друга произвольно. В кривая Безье строится по четырем точкам. Через начальную и конечную точку она проходит, а две серединные определяют величину и направление производной( скорости изменения, как тут правильно было замечено). Поэтому без наложения ограничений, не получится в любом случае. Если ты хочешь, чтобы кривая была без изломов, необязательно уравнивать величину производной. Главное, чтобы вектора направления производных были коллинеарны и началом у них была конечная точка первого участка и она же начальная второго участка. Возьми 3dsmax и построй там Безье кривую и ты увидишь, что точки через которые она проходит есть только часть всех точек, остальные, невидимые в процессе построения( но видимые при нажатии на точку), как раз и определяют производные, просто вычисляет она их автоматически так, чтобы кривая изначально была гладкая. |
|
|
Дата: Дек 30, 2003 09:35:56 Sm_Andrei месте излома можно повысить уровень детализации и расположить там побольше кривых Этот вариант не подходит. heXone В кривая Безье строится по четырем точкам. Через начальную и конечную... Я это знаю. Поэтому без наложения ограничений, не получится в любом случае Вот такой ответ мне и был нужен. Четко и однозначно. Хорошо. Тогда кроме сплайна Эрмита, какой еще обладает достаточной универсальностью? Тот алгоритм построения кубического сплайна, что у меня есть, требует, чтобы точки были отсортированы х1 < x2 < x3, т.е. по возрастанию. captain cobalt говорил, что кубический сплайн работает и с произвольным расположением точек. Есть такой? |
|
|
Дата: Дек 30, 2003 10:35:26 · Поправил: heXone Посмотри тут: http://alglib.manual.ru/interpolation/spline3.php Отметим, что точки xi должны быть отсортированы по возрастанию Насколько я понял это нужно только для вычисления производных. |
|
|
Дата: Дек 30, 2003 10:57:47 · Поправил: Toxic Я смотрел эту статью еще на том сайте, откуда они ее передрали. Вообще-то, сортировка потребует дополнительных затрат вычислительных ресурсов, а это в моем случае не желательно. Еще там есть сайт http://algolist.manual.ru |
|
|
Дата: Дек 30, 2003 11:07:57 · Поправил: heXone Для кубического нужно сортировать. http://www.library.cornell.edu/nr/bookcpdf/c3-3.pdf Есть еще сплайн катмула-рома (TCB spline),но он тебе не подойдет там тоже нужно задавать ограничения tension, continuity, bias. Все интерполяционные сплайны так или иначе одинаковые, различными являются только методы вычисления производных. Остается Bezier и Nurbs, но они апроксимационные. :( |
|
|
Дата: Дек 30, 2003 11:14:07 Toxic Тот алгоритм построения кубического сплайна, что у меня есть, требует, чтобы точки были отсортированы х1 < x2 < x3 А соединять линией эти точки нужно по возрастанию или нет? |
|
|
Дата: Дек 30, 2003 11:16:38 Zoda А соединять линией эти точки нужно по возрастанию или нет? Нет, не обязательно. Вообще ведь точки не соединяются. Высчитывается значение сплайнового многочлена по параметру u [0..1]. Все равно как его пускать от 0 до 1 или от 1 до 0. А потом через LineTo->MoveTo P.S. Если я правильно тебя понял :) |
|
|
Дата: Дек 30, 2003 11:21:45 heXone Нет, не обязательно Я к тому, что если линия может иметь самопересечения и произвольно находиться в пространстве, то можно интерполировать кубическими сплайнами отдельно координату х и отдельно у. Вообще ведь точки не соединяются... Ну да .... :) |
|
|
Дата: Дек 30, 2003 11:35:29 Zoda А соединять линией эти точки нужно по возрастанию или нет? Нет. Как раз не по возрастанию - произвольно. ...произвольно находиться в пространстве О пространстве речь не идет. Задача для плоскости. heXone Сплайн Катмулла-Рома и NURBS у меня есть. Об этом я говорил в начале. Ну ладно. Сейчас времени нету. Вечером разберусь с линками и тамошними алгоритмами. |
|
|
Дата: Дек 30, 2003 11:56:45 Toxic О пространстве речь не идет. Задача для плоскости Это я о двумерном пространстве ;) Хотя для трехмерного тоже можно отдельно координаты интерполировать. |
|
|
Дата: Дек 30, 2003 12:49:21 · Поправил: Sm_Andrei Toxic Этот вариант не подходит Не понимаю. Ограничений у кривых Безье нет.В месте крутых изгибов без высокой детализации не обойтись в любом методе(кривой). Согласен? |
|
|
Дата: Дек 30, 2003 17:22:29 Sm_Andrei в gdi. при желании кривую Безье можно завернуть в петлю и если добится того что размер петли станет значительно меньше расстояний между задающиме точками то алгоритмы с постоянным шагом параметра и line_to не дают желаемого результата, а уменьшение шага параметра, существенно снижает производительность. предпологаю что может существовать алгоритм либо адаптивного шага либо что то идейно похожее на алгоритм Брезенхайма возможно основанное на каких то особых свойсвах кривой. графика windows интенсивно использует кривые Безье в том числе и в шрифтах должен же быть быстрый метод получения качественных растров. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.043 |