0 / 0 / 0
Регистрация: 29.04.2012
Сообщений: 9
|
||||||
1 | ||||||
Задачка про кривые Безье28.02.2013, 13:37. Показов 3395. Ответов 2
Метки нет (Все метки)
Нужны советы (скорее алгоритмические) по одной задаче.
Даны опорные точки кривой Безье, начальный и конечный параметры t0 и t1(0<t<1), а также значение ширины. Требуется "залить полосу" данной ширины вдоль кривой Безье, начиная с (x(t0),y(t0)) до (x(t1),y(t1)) причем желательно быстро. Важно то, что ширину нужно откладывать вдоль перпендикуляра к кривой в данной точке. Пробовал два подхода. Первый - это строить перпендикуляры в каждой точке, считать точку конца отрезка, прорисовывать линию. Второй - это строить круги в каждой точке с диаметром равным ширине. Первый способ быстрее, но остаются пробелы между линиями. Недостаток второго способа это то, что почти каждая точка закрашивается несколько раз. К тому же почему-то идет расхождения между решениями(рисунок во вложении). Красное - результат решения с кругами, черное-с перпендикулярами, зеленое - кривая Безье, построенная стандартными средствами C++(GDI+). Вот содержательная часть кода.
0
|
28.02.2013, 13:37 | |
Ответы с готовыми решениями:
2
C++, кривые Безье, Алгоритмом de Casteljau Задачка про массивы Задачка про биты Задачка про спорт |
0 / 0 / 0
Регистрация: 29.04.2012
Сообщений: 9
|
||||||
28.02.2013, 13:50 [ТС] | 2 | |||||
Исправленный код:
0
|
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
|
||||||
28.02.2013, 19:32 | 3 | |||||
Можно описать часть кривой безье через другую кривую безье. И уже отрисовывать эту другую кривую безье с помощью обычных средств с нужной толщиной кисти.
Например, вот так (самое интересное в Widget::updatePart()):
0
|
28.02.2013, 19:32 | |
28.02.2013, 19:32 | |
Помогаю со студенческими работами здесь
3
Задачка про елку Задачка про треугольник. задачка про ящики Задачка про строки и слова Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |