2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему
 
 Аппроксимация элиптической кривой при помощи кривой Безье
Сообщение05.03.2008, 14:20 


04/03/08
2
Молдавия, Кишинев
Добрый день.
Кто нибудь может подсказать, как аппроксимировать дугу эллипса при помощи криых Безье, или где это можно прочитать.

Зарание большое спасибо.

 Профиль  
                  
 
 
Сообщение05.03.2008, 20:09 
Заслуженный участник
Аватара пользователя


22/11/06
1096
Одесса, ОНУ ИМЭМ
> дугу эллипса
ИМХО так же, как и любую другую гладкую кривую.

 Профиль  
                  
 
 
Сообщение05.03.2008, 20:43 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Бодигрим писал(а):
ИМХО так же, как и любую другую гладкую кривую.

Хорошо, тогда вопрос: как аппроксимировать любую гладкую кривую при помощи кривой Безье? :lol: :twisted:

wheelly писал(а):
как аппроксимировать дугу эллипса при помощи криых Безье,

Первый шаг — это превратить эллипс в окружность (немного растянуть вдоль короткой оси). Потом можно пытаться аппроксимировать дугу окружности. Пытаться, потому, что качество аппроксимации сильно зависит от углового размера дуг. Для дуг с угловым размером $\le \pi/2$ хорошо работает, например, такой выбор управляющих точек: если радиус окружности $R$, а величина дуги $\beta$, то $P_1P_2$, $P_4P_3$ направлены по касательной к дуге и имеют длину $|P_1P_2| = |P_4P_3|=\frac43 R \tg\frac{\beta}{4}$. Ну, а теперь окружность можно сплюснуть обратно.

Строго говоря, это не лучшее приближение ни в каком смысле, поскольку растяжение/сплющивание не сохраняют расстояния. Но на безрыбье…

Это положение управляющих точек соответствует касательной на концах к.Б., проходящей через середину дуги. Возможны и другие условия: минимальность отклонения, равенство площади, и другие. Результаты могут быть и лучше в некотором (заранее определённом) смысле, но формулы будут заметно более громоздкие.

 Профиль  
                  
 
 
Сообщение05.03.2008, 22:07 
Заслуженный участник
Аватара пользователя


11/04/07
1352
Москва
незваный гость писал(а):
Результаты могут быть и лучше в некотором (заранее определённом) смысле, но формулы будут заметно более громоздкие.

Насколько я знаю, дугу эллипса точно определяется кривыми b-spline и формулы там не такие сложные. Кивые Безье частный их случай. Это можно проверить записав дугу эллипса в формате igs в одном из пакетов инженерной графики.

 Профиль  
                  
 
 
Сообщение06.03.2008, 00:03 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Zai писал(а):
Насколько я знаю, дугу эллипса точно определяется кривыми b-spline и формулы там не такие сложные.

Эт’ вряд ли. Дело в том, что окружность (эллипс) невыразимы в полиномиальной покоординатной параметризации (а сегменты B-spline'а именно таковы).

Zai писал(а):
Кивые Безье частный их случай.

К.Б. — это параметрическая кривая третьего порядка. А сплайн — это семейство гладко согласованных полиномиальных кривых. К.Б., конечно, частный случай, в том же смысле, что и отрезок — частный случай ломаной. Но, например, отрезком трудно аппроксимировать окружность, а ломаной — можно.

Zai писал(а):
Это можно проверить записав дугу эллипса в формате igs в одном из пакетов инженерной графики.

«Лишь теория объясняет, что же мы ухитряемся наблюдать.» Например, Вы увидите некоторую к.Б. И что, она станет дугой эллипса?

 Профиль  
                  
 
 
Сообщение06.03.2008, 00:25 
Аватара пользователя


23/09/07
364
Вставлю свои пять копеек:
:D
wheelly писал(а):
Аппроксимация элиптической кривой при помощи кривой Безье

как аппроксимировать дугу эллипса

Эллиптическая кривая - это не дуга эллипса, несмотря на название.

 Профиль  
                  
 
 
Сообщение06.03.2008, 04:05 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Echo-Off писал(а):
Эллиптическая кривая - это не дуга эллипса, несмотря на название.

Точно не эллиптическая функция?

 Профиль  
                  
 
 
Сообщение06.03.2008, 06:59 
Заслуженный участник
Аватара пользователя


11/04/07
1352
Москва
незваный гость писал(а):
«Лишь теория объясняет, что же мы ухитряемся наблюдать.» Например, Вы увидите некоторую к.Б. И что, она станет дугой эллипса?

К.Б. можно определять и в полярных координатах. Тогда дуга окружности будет отрезком.

 Профиль  
                  
 
 
Сообщение06.03.2008, 07:37 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Zai писал(а):
К.Б. можно определять и в полярных координатах. Тогда дуга окружности будет отрезком.

Всё можно. Хотелось бы при этом сохранить какие-нибудь полезные свойства. Иначе зачем называть к.Б.?!

Между прочим, прямую можно рассмотреть в полярных координатах. Правда, многие при этом называют её спиралью Архимеда. К чему бы это?

 Профиль  
                  
 
 
Сообщение06.03.2008, 09:44 


22/01/06
14
С помощью кривой Безье точно изобразить дугу эллипса не получится, а вот с помощью рациональной кривой Безье можно. Материалов я быстро найти не смог, но можно попробовать погуглить по слову NURBS -- non-uniform rational B-spline.

В английской википедии есть пример параметризации окружности: http://en.wikipedia.org/wiki/NURBS

 Профиль  
                  
 
 
Сообщение13.03.2008, 00:12 


04/03/08
2
Молдавия, Кишинев
Echo-Off писал(а):
Эллиптическая кривая - это не дуга эллипса, несмотря на название.

Похоже вы правы :-) .

Выражусь по точнее:
В SVG файлах есть элемент path. Одна из команд этого элемента - это "elliptical arc curve" (http://www.w3.org/TR/SVG11/paths.html#P ... rcCommands).
Вот к чему сводится моя задача:
Есть две точки на плоскости A и B, которые принадлежат эллипсу с заданными полуосями a и b и центром (cx;cy) (пусть мы точно знаем что точки принадлежат этому эллипсу).
Надо найти такую К.Б. (желательно кубическую), которая очень "близко" расположенна к дуге эллипса AB.
Требуется именно кривая Безъе, т.к. девайс умеет рисовать только прямую и кубическую кривую Безъе.

Я нашел описание на англ., но мне немного не понятен этот документ :( .
elliptical-arc.pdf
Вот тот же документ в html

 Профиль  
                  
 
 
Сообщение13.03.2008, 01:33 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
elliptical arc curve == Кривая "дуга эллипса"

Добавлено спустя 55 минут 5 секунд:

Я посмотрел статью, на которую Вы ссылаетесь. Идея приравнять кривизну (вторую производную) мне в голову не приходила (как неудачная), но результаты я сравнил: это худший (по точности) из известных мне методов.

В обозначениях статьи, $P_1 = E(\eta_1)$, $P_2 = E(\eta_2)$, $Q_1 = P_1 + \alpha E'(\eta_1)$, $Q_2 = P_2 - \alpha E'(\eta_2)$, $\alpha = \frac43 \tg(\frac{\eta_2-\eta_1}{4})$ даёт заметно лучший результат. Раз так в 8 лучший. А если использовать что-нибудь чуть хитрее (скажем, $\alpha = \frac43 \tg(\frac{\eta_2-\eta_1}{4})\left(1-0.0264731\tg^4(\frac{\eta_2-\eta_1}{4})\right)$), то мы и ещё раза в полтора улучшим.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group