Форум: "Media";
Текущий архив: 2004.01.26;
Скачать: [xml.tar.bz2];
Внизэлипс по 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 вся ветка
Форум: "Media";
Текущий архив: 2004.01.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c