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

Вниз

элипс по Polyline   Найти похожие ветки 

 
dzmitry_   (2003-09-12 16:42) [0]

такой хитрый вопрос, нужна замкнутая кривая, качающаясяя центам линий по Polyline...
кривые Безье немного не подходят, существует ли такой алгоритм?
или всё таки использвать стандарт?


 
MBo ©   (2003-09-12 16:44) [1]

>замкнутая кривая, качающаясяя центам линий по Polyline
переведи


 
dzmitry_   (2003-09-12 17:04) [2]

ошибочка, замкнутая кривая, которая касается центра линий обьекта Polyline... т.е. частный случай - в прямоугольнике выводиться эллипс...


 
MBo ©   (2003-09-12 17:10) [3]

Безье прекрасно подходит, если многоугольник выпуклый, иначе могут быть петли.


 
dzmitry_   (2003-09-15 12:54) [4]

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


 
MBo ©   (2003-09-15 13:08) [5]

одной кривой - конечно, нельзя. а вот если кривых - по числу сторон - все нормально.
Так если тебе эллипс надо - почему бы и не нарисовать Ellipse?


 
ZEE ©   (2003-09-15 13:33) [6]

>dzmitry_ (15.09.03 12:54) [4]
>кривой безье нормальную замкнутую фигуру не получается, особенно на элипс

"не получается" - не значит "не возможно"...

в PolyBezier() надо массив точек подставить с правильно рассчитанными координатами
да еще надо кол-во точек делать +2 от нужного - так чтобы у точек 1 и 2 (n и n-1) координаты совпадали

и я так понимаю Ellipse не подходит - т.к. надо поворачивать эллипс...

кстати можешь посмотреть мой скринсейвер, в кот. как раз PolyBezier используется
http://zee.by.ru/download/zsaverring.zip (~30K)
так что безье работают...


 
MBo ©   (2003-09-15 13:51) [7]

>надо поворачивать эллипс
4 безье, аффинное пребразование контр. точек.


 
dzmitry_   (2003-09-17 13:48) [8]

>Так если тебе эллипс надо - почему бы и не нарисовать Ellipse?
я>т.е. частный случай - в прямоугольнике выводиться эллипс...
но могут быть и другие варианты конечно...

>в PolyBezier() надо массив точек подставить с правильно
>рассчитанными координатами
насчёт правильно рассчитаных координат не знаю увы, ввод данных осуществляется пользователем, а как известно, они могут такого начудить...

>да еще надо кол-во точек делать +2 от нужного - так чтобы
>у точек 1 и 2 (n и n-1) координаты совпадали
за такой совет спасибо, надо будет попробовать...


 
dzmitry_   (2003-09-22 10:59) [9]

>да еще надо кол-во точек делать +2 от нужного - так чтобы
>у точек 1 и 2 (n и n-1) координаты совпадали
увы, бейзера линии как то не воспринимают это, ничего не выводится... видно неправильно точки расположены (хотя странно - все они расположены вроде по кругу, и проблем не должно быть...)


 
ZEE ©   (2003-09-22 13:05) [10]

кстати линии безье (PolyBezier) рисует хитро и просто расставив точки по кругу - не подойдет

см. например рисование дуги берем точку1 и точку2 - между ними надо нарисовать дугу, но надо еще знать куда искривляться будет дуга
поэтому надо брать три точки т1, т2, т3

а теперь пробуем продолжить рисовать уту дугу до полукруга - добавляем еще одну точку т4, но опять не то дуга будет дорисовываться так т2, т3 (искревление), т4 - а надо бы т3, т4 (искревление), т5

Поэтому я круги (элипсы) с пом. Безье рисую из четырех дуг:
ArcPts:array[0..4]of TPoint;
...
ArcPts[0]:=Point(round(x1),round(y1));
ArcPts[1]:=Point(round(x1),round(y1));// этот тот самый повтор
ArcPts[2]:=Point(round(x2),round(y2));
ArcPts[3]:=Point(round(x3),round(y3));
ArcPts[4]:=Point(round(x3),round(y3));// еще повтор
PolyBezier(DC1,ArcPts,4);//дуга 1
// а дальше еще три дуги но с перерасчитанными точками


 
dzmitry_   (2003-09-23 10:16) [11]

>ZEE © (22.09.03 13:05) [10]
вот теперь спасибо!
наконецто у меня получилось эта сложная и замкнутая кривая которую я хотел...
правда код получился довольно большой...
теперь осталось только подумать как сделать не только линию, но и закрашенный контур на основе этой линии...


 
ZEE ©   (2003-09-23 14:47) [12]

точно не знаю - не пользовал, но что-то типа Polygon надо



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

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

Наверх




Память: 0.49 MB
Время: 0.009 c
14-83233
Романов Р.В.
2004-01-06 08:42
2004.01.26
Fat32 -> NTFS


14-83235
Думкин
2004-01-06 06:14
2004.01.26
С днем рождения! 6 января.


11-83129
Gandalf
2003-05-07 17:26
2004.01.26
Как вам KOL.MASTAK.RU?


14-83238
int64
2004-01-06 10:01
2004.01.26
Форматирование кода


3-83118
_Strelok_
2003-12-29 11:37
2004.01.26
Использование IBDataSet