![]() |
Отрисовка кривой со стрелочкой на конце
Добрый день!
У меня возникла необходимость отрисовывать в программе кривые линии методом curveTo, и нужно чтобы на конце каждая такая линия оканчивалась стрелочкой. Как в иллюстраторе. С прямыми линиями lineTo всё было проще - можно узнать градус наклона линии, и соответственно, отрисовать на конце стрелку под определённым углом. А вот с кривыми проблема - контрольная точка вносит неясность, и непонятно, как определять угол касательной на конце этой кривой. А нужно очень точно определять, чтобы работало с любым искривлением. Есть материал, но он для прямых линий: http://stackoverflow.com/questions/8...ing-line-slope Вопрос: можно ли как-то математически вычислить этот угол наклона, и как это сделать? Можно ли придумать какой-то иной способ для реализации задуманного? Спасибо большое за внимание! |
Глядя сюда,можно предположить что можно использовать алгоритм рисования стрелочки для прямой.Только в качестве прямой будет касательная в конце курвы(от controlX;controlY до anchorX;anchorY)
|
Цитата:
Если так не сделать, то будет ощущение, что кривая не в центр входит. |
Насколько я понял проблема не в том как нарисовать стрелку,а в том,как найти угол,на который надо повернуть изображение стрелки.
Цитата:
|
Вложений: 1
Ну так откладываемый на кривой отрезок и будет угол относительно точки конца..
Я вот о чем, F это опорная точка - Хотя так тоже некрасиво. Лучше искать ещё одну точку и саму стрелку изгибать относительно кривой. |
В направлении контрольной точки рисуете прямой штришок на длину стрелки (корень стрелки) и кривую приводите к нему. Тоесть рисуете короткую прямую стрелку и присоединяете к ней кривую.
|
Цитата:
Цитата:
|
Цитата:
Но на словах - найти длину кривой и узнать процентное соотношение длины наконечника к кривой. А дальше с помощью аппроксимации найти координаты этой точки. И так наверное даже лучше будет, так как если сильно загнуть и приблизить опорную точку к концу кривой, то сама стрелка будет визуально немного меньше из-за того, что нахождение описанное выше предполагает, что искомый отрезок в точности совпадает с кривой. |
Вложений: 1
Качаете bezier. которая Вам покажет и координаты точки и угол наклона в этой точке и длину все кривой. Этой информации хватит чтобы любую стрелку отрисовать.
Код AS3:
Голосуем за редактор! Если Вы уже голосовали, то голосуйте ещё раз, при смене ip это становится возможным! Не дадим haxe одержать победу на as3. |
Просто великолепно! Спасибо огромное!
|
| Часовой пояс GMT +4, время: 01:17. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.