Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как соединить 2 точки, плавными линиями со стрелками на концах 
:(
    Опции темы
Angel_CJ
Дата 10.11.2007, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Собственно сабжsmile
Необходимо соединить 2 точки на плоскости плавными линиями, нарисовав на концах стрелки. 
PM MAIL   Вверх
skyboy
Дата 10.11.2007, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



отлично. берем первую точку. берем вторую точку. имея две точки, проводим через них дугу определенного радиуса(радиус не менее расстояния между точками; для одного значения радиуса есть только две возможности провести окружность через две точик); рисуем на концах стрелки(каждая стрелка - два треугольника, симметричные относительно "оси" стрелки). все.

Добавлено через 15 секунд
может, подробности выдашь какие-о?
PM MAIL   Вверх
Angel_CJ
Дата 10.11.2007, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нужно, что бы было примерно, как на картинке. Т.е. дуга не подходит. Пробовал кубические сплайны - тоже фигня получается :( Я хотел еще опорную точку использовать одну. Т.е. чтобы получилась плавная кривая (но не дуга) через 3 точки.

Присоединённый файл ( Кол-во скачиваний: 28 )
Присоединённый файл  01.GIF 3,02 Kb
PM MAIL   Вверх
skyboy
Дата 10.11.2007, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



похоже, это кривая Безье. Вот ещё сходу описания алгоритмов построения:
на alglib.sources.ru
на algolist.manual.ru
PM MAIL   Вверх
Angel_CJ
Дата 11.11.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да нет :( Кривая Безье не подходит. Можно использовать лишь 3 точки: начальную, конечную и опорную. Можно без опорной.

Но, если с опорной, то кривая должна через нее проходить

Это сообщение отредактировал(а) Angel_CJ - 11.11.2007, 19:52
PM MAIL   Вверх
Angel_CJ
Дата 13.11.2007, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Неужели никто не знает, как это сделать? :(
PM MAIL   Вверх
marcusmae
Дата 13.11.2007, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


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

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



Angel_CJ, а может использовать четыре точки? = Две начальные и две, характеризующие "выгибы" кривой при приближении к начальным. Если выгибы симметричны, то, считай, одна опорная точка... Какой-нибудь полином Лагранжа по ним построить? Или снова не то?  smile 

... И вообще, я не понял, чем неугодила кривая Безье :

user posted image

Лично я вижу сходство с твоим рисунком. Опорных точек на одну больше, вся проблема - научиться их выбирать. По поводу желания ограничиться одной опорной точкой замечу, что тебе нужен полином, как минимум третей степени. Через две точки таких полиномов можно построить бесконечно много. Имея три точки на одной прямой, ты получишь прямую линию, не на одной прямой - несимметричную кривую.

Это сообщение отредактировал(а) marcusmae - 13.11.2007, 23:14


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
skyboy
Дата 13.11.2007, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(marcusmae @  13.11.2007,  21:44 Найти цитируемый пост)
Лично я вижу сходство с твоим рисунком. 

а я не вижу smile по-моему, ты для иллюстрации взял немного не ту картинку. впрочем, я тоже не понимаю, почему не кривая Безье.
Цитата(marcusmae @  13.11.2007,  21:44 Найти цитируемый пост)
Опорных точек на одну больше, вся проблема - научиться их выбирать.

Цитата(marcusmae @  13.11.2007,  21:44 Найти цитируемый пост)
Две начальные и две, характеризующие "выгибы" кривой при приближении к начальным. Если выгибы симметричны, то, считай, одна опорная точка... 

вот-вот. причем с таким подходом можно даже по двум опорным точкам строить...
PM MAIL   Вверх
Dims
Дата 13.11.2007, 23:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: 1
Всего: 11



Цитата(Angel_CJ @ 11.11.2007,  19:27)
Да нет :( Кривая Безье не подходит. Можно использовать лишь 3 точки: начальную, конечную и опорную. Можно без опорной.

Но, если с опорной, то кривая должна через нее проходить

Всё-таки это кривая Безье. Ты просто не учитываешь, что опорные точки можно НЕ РИСОВАТЬ, а просто держать "в уме".  Кривая Безье не проходит по своим опорным точкам.

Вот, смотри, я нарисовал в CorelDraw кривую Безье. Синими наконечниками стрелок обозначены две опорные точки. Они нужны только для расчёта, ты их не рисуй и всё.



Присоединённый файл ( Кол-во скачиваний: 22 )
Присоединённый файл  besier_sample.jpg 19,81 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


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

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


 




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


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

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