Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.07.2010, 21:11
Новичок

Отправить личное сообщение для BOB4uK Посмотреть профиль Найти все сообщения от BOB4uK
 
Регистрация: 30.06.2008
Сообщений: 24

Вопрос по безье
Пишу пример использования кривой безье через формулу
Код:
sec=len/(countp-1);
t=-(sec/len);
for (i = 0; i<countp;i++)
{
//********************************************
//B(t)=(1-t)^2*P1+2*t*(1-t)*P+t^2*P2,
//********************************************
t+=sec/len;

X[i]=(1-t)*(1-t)*x0+2*t*(1-t)*x1+t*t*x2;
Y[i]=(1-t)*(1-t)*y0+2*t*(1-t)*y1+t*t*y2;
}

Все нормально точки высчитываются, но при проверке получается преличная погрешность…
Как я проверяю: есть три точки формирующие треугольник ABC (50;50;70.7), алгоритм просчитывает точки я высчитываю расстояние самой дальней и высчитываю типа радиуса он получается 54см…
В CorelDRAW рисую квадрат 50*50 и рисую кривую безье, нахожу радиус он получается 51см
А при больших размерах погрешность растет…

В чем может быть дело?
  #2  
Старый 21.07.2010, 06:58
MBo MBo вне форума
Местный

Отправить личное сообщение для MBo Посмотреть профиль Найти все сообщения от MBo
 
Регистрация: 21.09.2006
Адрес: Новосибирск
Сообщений: 1,374

почему countp-1 ?
Начальное значение t должно быть нулевым, этого в коде не видно.
Зачем вообще нужны переменные sec и len ?
  #3  
Старый 24.07.2010, 21:32
Новичок

Отправить личное сообщение для BOB4uK Посмотреть профиль Найти все сообщения от BOB4uK
 
Регистрация: 30.06.2008
Сообщений: 24

перед циклом t=-(sec/len);
в цикле первым делом t прибавляем тоже значение и получаем 0...

sec и len
мне нужны для высчитывания t, чтобы равномерно было от 0 до 1

конечно можно было и по другому, но я пробовал и от этого результат не меняется!
  #4  
Старый 24.07.2010, 22:01
MBo MBo вне форума
Местный

Отправить личное сообщение для MBo Посмотреть профиль Найти все сообщения от MBo
 
Регистрация: 21.09.2006
Адрес: Новосибирск
Сообщений: 1,374

dt = 1 / countp;
в цикле
t = i * dt
либо (инициалировав t нулем)
в конце цикла t+=dt
  #5  
Старый 25.07.2010, 14:08
Новичок

Отправить личное сообщение для BOB4uK Посмотреть профиль Найти все сообщения от BOB4uK
 
Регистрация: 30.06.2008
Сообщений: 24

Сообщение от MBo Посмотреть сообщение
dt = 1 / countp;
в цикле
t = i * dt
либо (инициалировав t нулем)
в конце цикла t+=dt
Сомневаюсь я что от этого будет результат как в CorelDRAW
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Векторная графика, кривые Безье, изменение и сглаж, Векторная графика, кривые Безье kolyazdv Обработка изображений, звук, графика 2 20.07.2010 19:29
Безье с антиалиасингом Gashish Реализация, исходники, языки 9 26.01.2010 17:18
Поверхности Безье Sergios Математические алгоритмы 0 18.06.2009 16:17
Кривые Безье Яков Обработка изображений, звук, графика 1 04.01.2008 11:31
рисование кривой безье незарегистрированный Реализация, исходники, языки 1 29.03.2007 10:12