Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-83164
Tornado
2004-01-15 15:26
2004.01.26
ActionManager


3-83112
Крутыш
2003-12-27 14:09
2004.01.26
Либо что-то с ADO или гридом из пакета DeveloperExpress4.


1-83131
Rander
2004-01-14 18:36
2004.01.26
Код исправляющий ошибки?


1-83165
Grinder
2004-01-15 00:19
2004.01.26
форма 1х1


14-83248
Игорь Шевченко
2004-01-04 20:57
2004.01.26
Знаете ли вы Windows 2000 ? :)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский