Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.04;
Скачать: CL | DM;

Вниз

Кто знает как нарисовать кривые Безье?   Найти похожие ветки 

 
WondeRu ©   (2004-06-17 15:01) [0]

Здрасте!
Кто знает как нарисовать кривые Безье только с использованием линий, не прибегая к дополнительным вычислителям?
А поконкретнее в комнате "Медиа"!
Заранее спасибо!


 
MBo ©   (2004-06-17 15:10) [1]

средствами GDI (PolyBezier) это рисование будет, наверно, все же быстрее, чем самому вручную.

P(t)=P0*(1-t)^3+3*P1*(1-t)^2*t+3*P2*(1-t)*t^2+P3*t^3
где t - параметр, P0 и P3 - начальная и конечная точки, P1,P2 - контрольные, P - точка на кривой при параметре t. При рисовании отрезками кривая делится пополам при t=0.5 на две кривых, каждая из которых проверяется на близость к прямой - по расстоянию от центра кривой до отрезка P0i-P3i. Процесс продолжается рекурсивно.


 
AlexG ©   (2004-06-17 15:10) [2]

Либо рисуй КРИВЫ, либо выгони Е...


 
WondeRu ©   (2004-06-17 15:19) [3]

2MBo ©   (17.06.04 15:10) [1]
а нету ли уже реализованного алгоритма, хоть на С++?
Здесь пример для 4 контрольных точек, а как быть если их у меня по 10-24 на каждую линию?


 
MBo ©   (2004-06-17 15:31) [4]

>если их у меня по 10-24 на каждую линию?
Это у тебя одна кривая высокой степени или набор (кубических) кривых (как в PolyBezier)?


 
MBo ©   (2004-06-17 15:33) [5]

Да, глянул в Media - еще вопрос возник - это у тебя все-таки кривые Безье или NURBS (non-uniform rational B-splines)?


 
WondeRu ©   (2004-06-17 15:38) [6]

>Это у тебя одна кривая высокой степени или набор (кубических) кривых (как в PolyBezier)?

Это одна кривая, которая задается массивом ctrlPoints
[code]
gluNurbsCurve(theNurb,
                    KnotsCount,
                    @curveKnots[0],
                    3,
                    @ctrlpoints[0, 0],
                    4,
                    GL_MAP1_VERTEX_3);
[/code]

>то у тебя все-таки кривые Безье или NURBS (non-uniform rational B-splines)?
думаю что NURBS более похоже на правду (смотрю этот же чертеж в AutoCAD: NURBS - правильно, а просто Безье - лишь отдаленно напоминает мою загогулину)


 
MBo ©   (2004-06-17 15:49) [7]

>NURBS более похоже на правду
Ууу, здесь алгоритм намного сложнее, эффективная самостоятельная реализация трудна, и лучше все же использовать опенжл-ские функции.


 
MBo ©   (2004-06-17 15:58) [8]

http://devworld.apple.com/dev/techsupport/develop/issue25/schneider.html


 
WondeRu ©   (2004-06-17 16:07) [9]

2MBo ©   (17.06.04 15:49) [7]
Здесь есть трабл: при каждой перерисовке в  ОпенЖЛ заново пересчитывается кривая! мне бы один раз почситать и рисовать их!


 
Rouse_ ©   (2004-06-17 16:51) [10]

> [9] WondeRu ©   (17.06.04 16:07)
А если по тупому array of TPoint (с учетом что ты просчитываешь каждую точку руками) ?


 
WondeRu ©   (2004-06-17 17:05) [11]

>А если по тупому array of TPoint (с учетом что ты просчитываешь каждую точку руками) ?
Можно и "по тупому", только попробуй просчитай "каждую точку руками"! Я вот взялся за теорию от [8]!
Или я не понял? Может поподробнее?


 
Rouse_ ©   (2004-06-17 17:12) [12]

> [11] WondeRu ©   (17.06.04 17:05)
Ну так все правильно, таким макаром ты и просчитаешь каждую точку, ее координаты занесешь в массив и не нужно будет каждый раз пересчитывать...


 
WondeRu ©   (2004-06-17 17:20) [13]

2Rouse_ ©   (17.06.04 17:12) [12]
с этим проблем нет! Проблема: [b]"КАК СЧИТАТЬ?"[/b]


 
Rouse_ ©   (2004-06-17 17:22) [14]

> [13] WondeRu ©   (17.06.04 17:20)
Ну так тебеже по ссылке MBo все формулы даны...



Страницы: 1 вся ветка

Текущий архив: 2004.07.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.03 c
1-1087883589
Dobriy
2004-06-22 09:53
2004.07.04
Отчёт


14-1087385918
default
2004-06-16 15:38
2004.07.04
И опять задачка


6-1083830237
johny
2004-05-06 11:57
2004.07.04
нажатие кнопки в WebBrowser!


14-1086097429
McSimm
2004-06-01 17:43
2004.07.04
Архивы форумов


1-1087908433
Gia Gvatua
2004-06-22 16:47
2004.07.04
Одновременное нажатие двух клавиш