Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по кривым Безье [Delphi, Windows]


3DMax ©   (2007-09-20 02:41:00) 

Здравствуйте! Растояние между точками на кривой Безье при одном и том же шаге t может значительно отличаться.

function BezierCurve(A, B, C: TFPoint; t: Single): TFPoint;
begin
if t < 0 then t := 0;
if t > 1 then t := 1;
Result.x := sqr(1-t)*A.x + 2*t*(1-t)*B.x + sqr(t)*C.x;
Result.y := sqr(1-t)*A.y + 2*t*(1-t)*B.y + sqr(t)*C.y;
end;

Подскажите, как сделать чтобы растояние между точками было всегда одинаковым (при одинаковом шаге t), независимо от формы кривой. Я так понимаю нужно вносить какую-то поправку в значение t, но как ее вычислить?


Думкин   (2007-10-03 07:20:00) [1]

> Jeer ©   (02.10.07 10:20) [7]

Ему не это надо. Ему надо чтобы расстояние в плоскости между точками соответствовало параметру, а не расстояние вдоль кривой соответствовало параметру.


Jeer   (2007-10-02 10:20:00) [2]


> 3DMax   (22.09.07 00:39) [6]


Если представить кривую линию, как траекторию движения объекта с постоянной скоростью, то путем моделирования такого движения и выборкой координат с заданным временным шагом как раз и получиться постоянным пройденный путь от точки до точки.


3DMax   (2007-09-22 00:39:00) [3]


> Цель-то какая?

С помощь кривой задается направление движения объектов.
После редактирования кривая Безье перобразуется в набор точек. При движении координаты объекта вычисляются интерполяцией координат соседних точек.

> Тебе нужно параметризацию, что ли задать такую, чтобы для
> любой точки расстояние до любой другой на кривой была линейной
> функцией этого параметра?
> Доказать пока не берусь, но мне кажется, что это будет выполнимо
> только для прямой.

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


Думкин   (2007-09-21 06:57:00) [4]

Тебе нужно параметризацию, что ли задать такую, чтобы для любой точки расстояние до любой другой на кривой была линейной функцией этого параметра?
Доказать пока не берусь, но мне кажется, что это будет выполнимо только для прямой.


MBo   (2007-09-21 05:29:00) [5]

>Мне собственно нужно что-бы независимо от формы кривой растояние между точками было одинаковым.

Цель-то какая?


3DMax   (2007-09-21 00:25:00) [6]


> Причем тут какое-то расстояние - я не понял...

На прямых участках графика растояние между точками больше, а на реских изгибах значительно меньше (это свойство присуще кривым второй и высших степеней). Мне собственно нужно что-бы независимо от формы кривой растояние между точками было одинаковым.

А функцию я показал, что бы не возникало вопросов типа "как ты это делал?"


> Сделай h := A.x - B.x == B.x - C.x и вычисляй

В том то и вся соль, что A.x - B.x и B.x - C.x могут значительно отличаться


Jeer   (2007-09-20 12:48:00) [7]


> 3DMax   (20.09.07 02:41)


Сделай h := A.x - B.x == B.x - C.x и вычисляй


MBo   (2007-09-20 06:37:00) [8]

Приведенная функция вычисляет координаты точки на кривой второго порядка при параметре t.
Причем тут какое-то расстояние - я не понял...


Наверх

Титульная страница Поиск, карта сайта Написать письмо