|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Apr 2010
Сообщений: 82
|
Вращение массива Point вокруг курсора
Знаю, что было много постов о вращении с помощью матриц. Видел, пробовал, не получилось....
Задача немного не тривиальная. Суть вот в чём: приложение - онлайн рисовалка, инструмент - кисть. Рисует с помощью массива линий. Каждая линия имеет постоянный отступ от курсора. Задача: при рисовании изогнутой линии, поворачивать новые точки для линий вокруг курсора в сторону поворота линии. |
|
|||||
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Мой мозг сейчас взорвется. Нельзя ли объяснить по-доступнее?
Цитата:
Цитата:
Что на счет названия темы, массив не относится к типу DisplayObject, стало быть его нельзя вращать вокруг курсора |
|
|||||
Эээм. Массив Point вокруг курсора... Линии... Брр. Ткну телепатической энергией в свою давнишнюю темку, авось угадаю: http://www.flasher.ru/forum/showthread.php?t=146411
__________________
тут я |
|
|||||
Регистрация: Apr 2010
Сообщений: 82
|
Ок. Постараюсь подробнее.
Возьмём одну из множества (массива) линий, которые рисуются вслед за курсором. Для неё есть предидущая точка и последующая (точка, к которой проводится линия). Координаты каждой последующей точки высчитываются с использованием координаты курсора и стабильного отступа от курсора. Каким образом нужно менять отступ от курсора чтобы получился эффект, показанный на картинке? Если учесть, что угол между 2-мя соседними векторами известен. Нужно в идеале математическое решение задачи, т.е. как высчитать изменение координат отступа в зависимости от поворота курсора! или какое-то другое оригинальное решение! Добавлено через 59 секунд samana, Да!!!!!! Добавлено через 2 минуты dimarik, и что нам это даёт? Добавлено через 3 минуты КорДум, не совсем понял вашу мысль! |
|
|||||
За курсором таскается пустой контейнер. По-сути просто меняются его координаты. Он даже не добавляется в список отображения. Когда надо получить координаты точки вызывается localToGlobal у этого контейнера.
private var spr:Shape; public function Main() { spr = new Shape(); spr.x = 100; spr.y = 100; var point:Point = new Point(20, 0); var globalPoint:Point = spr.localToGlobal(point); drawPoint(this.graphics, localPoint.x, localPoint.y); spr.rotation = 45; var globalPoint:Point = spr.localToGlobal(point); drawPoint(this.graphics, localPoint.x, localPoint.y); } private function drawPoint(gr:Graphics, pointX, pointY):void { gr.beginFill(0); gr.drawCircle(pointX, pointY, 4); gr.endFill(); } Последний раз редактировалось alatar; 09.02.2011 в 12:14. |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
А не задумывались, почему нигде такого инструмента нет?
Рассмотрите такой случай: есть одна точка "кисти", не совпадает с курсором. Есть сперва два положения курсора - первое и второе. Что должно быть нарисовано? Понятно и очевидно =) А теперь у нас появляется третье положение курсора, которое не на одной прямой с первыми двумя, пусть поворот, для наглядности, на 90 градусов. Что должно быть нарисовано? Если будет внятный ответ на последний вопрос (лучше с картинкой), то я напишу код.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
Часовой пояс GMT +4, время: 14:09. |
|
« Предыдущая тема | Следующая тема » |
|
|