Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Вниз

Смысл параметров эллиптической дуги в vdx-формате Visio 2003   Найти похожие ветки 

 
Cyrax ©   (2007-02-10 16:33) [0]

Скажем, читаю vdx-файл и рисую схему (C#) на форме.
Для рисования дуг методом Graphics.DrawArc(...) нужно знать координаты прямоугольника, в который вписана дуга, начальный угол (startAngle) и изменение угла (sweepAngle). Но в vdx-файле сохраняются другие параметры дуги:

1. Начальная и конечная точки дуги
2. A - The distance from the arc"s midpoint to the midpoint of its chord
3. B - The y-coordinate of an arc"s control point
4. C - The angle of an arc"s major axis relative to the x-axis of its parent
5. D - The ratio of an arc"s major axis to its minor axis. Despite the usual meaning of these words, the major axis does not have to be greater than the minor axis, so this ratio does not have to be greater than 1. Setting this element to a value less than or equal to 0 or greater than 1000 can lead to unpredictable results

Как с помощью этих параметров нарисовать на форме дугу методом Graphics.DrawArc(...) ?
Т.е. фактически из этих параметров нужно получить обычные параметры (прямоугольник, углы)...


 
Cyrax ©   (2007-02-10 21:03) [1]

выш... напрягаем моск...


 
Cyrax ©   (2007-02-11 17:12) [2]

dsi


 
Cyrax ©   (2007-02-18 10:18) [3]

Переадресовываем вопрос default"у...


 
BOA_KAA ©   (2007-02-18 10:34) [4]

А ты с кем сейчас разговаривал?


 
Cyrax ©   (2007-02-19 22:46) [5]

А ты с кем сейчас разговаривал?
С Москвой, блин...


 
default ©   (2007-02-19 22:53) [6]

п-ц Cyrax!!!


 
Cyrax ©   (2007-02-19 22:58) [7]

default, ясней выражайся, не понимаю...


 
default ©   (2007-02-19 23:04) [8]

Cyrax ©   (19.02.07 22:58) [7]
я поторопился подумал тебе разъяснить параметры DrawArc нужно:)
щас подумаю
p.s. с отражением помогло?


 
default ©   (2007-02-19 23:18) [9]

в GDI+ дуга это кусок эллипса
тут дуга, вероятно, может и не быть куском эллипса и с помошью DrawArc тогда её не нарисовать
нарно надо открыть книгу по комп графике
и посмотреть что там за управляющая точка дуги...и другие премудрости


 
default ©   (2007-02-19 23:23) [10]

вот тут глянь
http://www.uran.donetsk.ua/~masters/2003/fvti/kudrya/library/nurbcurvrus.htm
может и оно


 
Cyrax ©   (2007-02-19 23:23) [11]

Речь идёт об эллиптических дугах...


 
default ©   (2007-02-19 23:24) [12]

Cyrax ©   (19.02.07 23:23) [11]
ты уверен?


 
default ©   (2007-02-19 23:25) [13]

к [10]
похоже что то
попробуй разобраться


 
Cyrax ©   (2007-02-19 23:29) [14]

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

попробуй разобраться

Гляну. Тебе ш респект...


 
default ©   (2007-02-19 23:40) [15]

Cyrax ©   (19.02.07 23:29) [14]
хотя вряд-ли это то
ты спроси у MBo, он наверняка знает
или на algolist-е том же


 
default ©   (2007-02-19 23:41) [16]

Cyrax ну отражение-то помогло тебе?


 
default ©   (2007-02-20 06:00) [17]

Cyrax прикольнись
открыл книгу "математические основы машинной графики"
и там описан придуманный мной алгоритм отражения:) приятно:)

"
отражение относительно произвольной прямой

-перемещение линии и объекта таким образом, чтобы линия прошла через начало координат;
-поворот линии и объекта вокруг точки начала координат до совпадения с одной из  координатных

осей;
-отражение относительно координатной оси;
-обратный поворот вокруг начала координат;
-перемещение в исходное попложение."


 
guav ©   (2007-02-20 12:20) [18]

> [17] default ©   (20.02.07 06:00)

Это... а зачем столько операций, в GDI+ же можно выполнять свои матрици преобразования, так её можно рассчитать той прямой и выполнить за одну операцию, а потом ещё повторно использовать для других объектов.


 
default ©   (2007-02-20 19:54) [19]

guav ©   (20.02.07 12:20) [18]
кури:)

Sub Flip(ByVal gp As GraphicsPath, ByVal x As Integer, ByVal y As Integer, ByVal angle As Single)
       Dim mx As New Matrix
       mx.Translate(-x, -y, MatrixOrder.Append)
       mx.Rotate(-angle, MatrixOrder.Append)
       mx.Scale(1, -1, MatrixOrder.Append)
       mx.Rotate(angle, MatrixOrder.Append)
       mx.Translate(x, y, MatrixOrder.Append)
       gp.Transform(mx)
End Sub


 
Cyrax ©   (2007-02-26 19:42) [20]

Отчёт для Default"a №2
-----------------------

До дуги я пока не дошёл. Занимаюсь другой программерской частью. Скоро к этой дуге вернусь. Там и отпишусь, что к чему...

p.s. Все свои ветки (которые не пропадают чудесным образом) я завершаю...



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

Форум: "Прочее";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.205 c
3-1168064892
-=Domix=-
2007-01-06 09:28
2007.03.25
Генегаторы


1-1170144704
Yevgeny
2007-01-30 11:11
2007.03.25
Выбор в DBGrid по Shift-LeftClick


15-1172481913
Игорь Шевченко
2007-02-26 12:25
2007.03.25
Запущен новый проект CPPBUILDER.RU


2-1172733688
Riply
2007-03-01 10:21
2007.03.25
Индекс объекта, возвращаемого MsgWaitForMultipleObjects


11-1151328705
lollol
2006-06-26 17:31
2007.03.25
Delphi SE and KOL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский