Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как удобно построить дугу в Delphi? Дано начало и конец, "высота" дуги 
:(
    Опции темы
S.A.G.
Дата 7.3.2007, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



В Дельфи есть метод канвы: 
Код
procedure Arc(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer);

Строит часть эллипса или окружности(дугу), вписанной в прямоугольник с заданными координатами. Как отрисовать дугу, имея в распоряжении координаты начала, конца и "высоту" дуги (т.е. имееться ввиду отрезок заданой длины, проведенный под углом 90 из центра отрезка соединяющего эти две точки)? Т.е. фактически имеем три точки через которых нужно провести дугу.. Предполагаеться также изменять эту высоту. Какие возникают мысли?

Это сообщение отредактировал(а) main - 7.3.2007, 00:29


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
Sovereign
Дата 7.3.2007, 04:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 7.11.2006

Репутация: 2
Всего: 4



Пусть у нас есть точки A,B это точки начала и конца, С - средина этого отрезка, CD - перпендикуляр, он же - высота дуги, мы можем найти угол CDB. Угол через чентр окружности AOB равен 360 - СDB *4, AOC его половине, таким образом из тр-ка AOC по стороне AC находим OC, отсюда и сами координаты центра, размеры прямоугольника (из них x1,y1,x2,y2), точки среза у нас есть (координаты A, B) -> x3,y3 x4,y4 ,вроде все, осталось только написать и проверить =), только это при условии что  СD<AC 

Это сообщение отредактировал(а) Sovereign - 7.3.2007, 04:31

Присоединённый файл ( Кол-во скачиваний: 29 )
Присоединённый файл  123.gif 5,38 Kb
PM MAIL   Вверх
S.A.G.
Дата 7.3.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



Толком не разбирал еще а уже предложили вариант.. спасибо. Тут так.. на глаз - речь идет вродебы о дугах окружностей? Arc вроде бы строит дуги конических сечений а в случае квадратов - дуги окружностей. Наверное метод по которому определили 3 точку и определил что дуга окружности.

Это сообщение отредактировал(а) main - 7.3.2007, 15:02


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
Sovereign
Дата 7.3.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 7.11.2006

Репутация: 2
Всего: 4



ага, для дуги элипса двух точек и высоты не хватит
PM MAIL   Вверх
S.A.G.
Дата 7.3.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



Думал насчет кривых Безье - там вообще все может быть просто. Но вот вопрос - если задать две точки в качестве начала и конца, а контрольные две совместить в одну - возможно так можно построить дугу окружности? Или сам этот метод на такое не расчитан? Я смотрел - вродебы дуги плавные.. но сам метод этот предполагает построение кривых отличных от дуг конических сечений.


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
Sovereign
Дата 7.3.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 7.11.2006

Репутация: 2
Всего: 4



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

Присоединённый файл ( Кол-во скачиваний: 23 )
Присоединённый файл  124.gif 2,40 Kb
PM MAIL   Вверх
S.A.G.
Дата 7.3.2007, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



Чет непонял рисунок.. где там кривая Безье? и что это за концы?


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
Sovereign
Дата 7.3.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 7.11.2006

Репутация: 2
Всего: 4



красная дуга, синие - две направляющие(длина синих линий влияет на крутизну изгиба), не знаю то это или нет, могу ошибаться

Это сообщение отредактировал(а) Sovereign - 7.3.2007, 15:23
PM MAIL   Вверх
MBo
Дата 7.3.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 10.6.2002

Репутация: 3
Всего: 18



бОльшая часть задачи здесь:
http://www.delphimaster.ru/cgi-bin/forum.p...2844946&n=9
PM MAIL   Вверх
S.A.G.
Дата 7.3.2007, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1339
Регистрация: 20.7.2006
Где: in ad equate

Репутация: нет
Всего: 19



Да вот только оказалось есть еще проблема. Оно то проведет дугу но оно ее проведет не только через рассчетные точки но гораздо дальше.. и что с этим куском делать? В Паскале и том функция получше была..

Это сообщение отредактировал(а) main - 7.3.2007, 21:13


--------------------
Вот она задачка: спасти себя от себя самого © Cube
Sometimes good people do evil things © A Simple Plan
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0450 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.