2014 dxdy logo

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

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


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


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



Начать новую тему Ответить на тему
 
 Аппроксимация эллиптической дуги кривой Безье. Искажения?
Сообщение28.02.2014, 05:11 
Аватара пользователя


07/06/11

281
Одесса
Вопрос таков, с математической точки зрения, насколько велики отклонения аппроксимации эллиптической дуги посредством кривой Безье? Скажем так, в каком знаке после запятой будут отклонения, если большую полуось эллипса принять за единицу, и от чего они будут зависеть (угол сектора, эксцентриситет...) ?

Вот пример кода, который это делает:

Код:
void arc_to_bezier(double cx, double cy, double rx, double ry,
                       double start_angle, double sweep_angle,
                       double* curve)
    {
        double x0 = cos(sweep_angle / 2.0);
        double y0 = sin(sweep_angle / 2.0);
        double tx = (1.0 - x0) * 4.0 / 3.0;
        double ty = y0 - tx * x0 / y0;
        double px[4];
        double py[4];
        px[0] =  x0;
        py[0] = -y0;
        px[1] =  x0 + tx;
        py[1] = -ty;
        px[2] =  x0 + tx;
        py[2] =  ty;
        px[3] =  x0;
        py[3] =  y0;

        double sn = sin(start_angle + sweep_angle / 2.0);
        double cs = cos(start_angle + sweep_angle / 2.0);

        unsigned i;
        for(i = 0; i < 4; i++)
        {
            curve[i * 2]     = cx + rx * (px[i] * cs - py[i] * sn);
            curve[i * 2 + 1] = cy + ry * (px[i] * sn + py[i] * cs);
        }
    }

 Профиль  
                  
 
 Re: Аппроксимация эллиптической дуги кривой Безье. Искажения?
Сообщение28.02.2014, 10:49 


25/02/14
27
Возьмём эллипс $\frac{x^2}{a^2}+\frac{y^2}{b^2}=1$ и дугу $[0,\alpha]$, где $\alpha \in (0, \frac{\pi}{2}) $. Каждая точка этой дуги имеет координаты $\left(\frac{ab}{\sqrt{a^2\tg^2\alpha+b^2}},\frac{ab\tg\alpha}{\sqrt{a^2\tg^2\alpha+b^2}}\right)$. Выразите координаты соответствующей точки на кривой Безье и возьмите расстояние между ними. Это и есть величина отклонения (для первой четверти) в зависимости от размера дуги и полуосей. Предполагаю, что точность окажется тем выше, чем меньше угол $\alpha$, а характеристики эллипса повлияют не так сильно, как число опорных точек.

 Профиль  
                  
 
 Re: Аппроксимация эллиптической дуги кривой Безье. Искажения?
Сообщение28.02.2014, 15:11 


29/09/06
4552
sla-von в сообщении #831264 писал(а):
Вот пример кода, который это делает:
Делает что?
Считает отклонения?
Аппроксимирует дугу? Как аппроксимирует? По какому принципу? Вариантов-то куча.
И хоть какие-то ограничения на дугу эту имеются? Не весь же эллипс одной кривой аппрксимируется.
Humanoid в сообщении #831235 писал(а):
и от чего они будут зависеть (угол сектора, эксцентриситет...) ?

Ясен пень, от способа аппроксимации, и от параметров дуги.
Точнее, для конкретной фиксированной дуги (с такими-то эксцентриситетом, началом и концом) --- величина отклонений зависит от способа аппроксимации.
Каков бы он ни был, на готовую формулку надеяться трудно, но можно помудрить с алгоритмом оценки.
А при относительно малой дуге, наверное, можно и формулку прикинуть. Но всё равно трудно будет.

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

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



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

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


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

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