Просмотр полной версии : Matrix - как быстро научиться
Akopalipsis
24.12.2013, 17:38
Уже неделю не как не получается осилить матрицы. Если использовать методы класса ( rotate, scale ), то вроде немного получается, а вот самими свойствами манипулировать - не как :( Посоветуйте, как можно быстрее научиться ими оперировать. Может есть статьи какие то или может кем то уже сделанные инструменты, чтобы в них покопаться и выучится на их примере.
Akopalipsis, сорри за оффтоп, но всё-таки:
"не как" -> "никак"
"какие то или может кем то" -> "какие-то или, может, кем-то"
"покопаться и выучится" -> "покопаться и выучиться"
Dukobpa3
24.12.2013, 18:26
Matrix (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/geom/Matrix.html)
В мануале вроде понятно и подробно описано. А что не получается?
Akopalipsis
24.12.2013, 18:49
В мануале вроде понятно и подробно описано. А что не получается?
Хелп у меня всегда открыт и в нем проиллюстрировано, довольно-таки доступно, но не до конца я понимаю, как манипулировать всеми свойствами одновременно. Нашёл вот что (http://www.senocular.com/flash/tutorials/transformmatrix/), в принципе, то что и хотел, но если есть подобные ссылки, то буду рад.
Akopalipsis, сорри за оффтоп, но всё-таки:
Спасибо! Мне оффтоп не мешает.
Dukobpa3
24.12.2013, 19:02
Ну лучше чем на синокуляре я документации не видел пока что:)
Там не только матрикс. Это на равне с хелпом рекомендую сохранить:)
Akopalipsis
24.12.2013, 21:38
Это на равне с хелпом рекомендую сохранить
Спасибо! Так и сделал :)
Добавлено через 1 час 19 минут
Пока я медленно продвигаюсь, хочу попросить правильного курса - как обратить выставленный угол при помощи свойств матрицы? Что не пробую, результата либо нет, либо не такой..
Dukobpa3
24.12.2013, 21:39
Что значит "обратить"?
Akopalipsis
24.12.2013, 21:56
Что значит "обратить"?
Объекту задан угол в 130 градусов, зная это, как его вернуть в состояние "без угла" ?
Как обратить угол обратно в ноль?
Добавлено через 2 минуты
Затупил я немного :) a=1,b=0,c=0,d=1.
Так ещё есть и
matrix.rotation(value);
Akopalipsis
25.12.2013, 01:37
Так ещё есть и
Спасибо! я помню, просто решил немного со стороны свойств зайти поучить :)
Добавлено через 2 часа 22 минуты
Ох... Нужен совет, а то мне кажется, что я не правильно делаю. Первую попытку объяснения, сделаю без кода, думаю, что получится понятно. Объект повернут на.. предположим 130 градусов ( тут сделаю акцент на том, что он повернут относительно своего центра ). Далее мне нужно, как я раннее писал, обратить угол в спять или задать свойству rotation, значение ноль. Для этого нужны косинус и синус угла, но в матрице свойства a,b,c,d - это, как написано в хелпе, косинусы и синусы. Используя их, я благополучно возвращаю положение до поворота или rotation===0. Далее я его масштабирую на два, matrix.a=2,matrix.d=2 и снова смещаю tx,ty относительно центра.
И вот с этого момента начинаются не стыковки.
Чтобы вернуть угол, мне опять нужны косинус и синус, по этому я снова беру в качестве косинуса, значение свойства matrix.a, который на данный момент равен двум. Синус я нахожу из имеющегося косинуса, корень и квадрата косинуса минус один. И теперь, когда я использую эти косинусы и синусы в расчётах, то не получается возвратить угол. В чем ошибка? Может нужно учитывать центр или свойство matrix.a, значение которого, я использую, как косинус, нужно приводить к радианам.. Или ещё что?
Добавлено через 3 минуты
И так, как косинус не может быть равен двум, я число два перевожу в радианы и получаю 0.03490658503988659. И из этого числа, нахожу синус.
Dukobpa3
25.12.2013, 01:47
Чтобы упростить можно взять контейнер и в него положить дитя, которое и будет твоей картинкой.
Повороты делать только с контейнером, а скейлы только с дитям(ну или наоборот).
А вопросы твои по математике, а не по коду, мудреного ничего нету, просто запутался. Разбирайся :)
Ну и методы:
translate(tx, ty)
scale(sx, sy)
rotate(q)
Придумали как раз чтоб не путаться. Пробуй с ними. Придумывать себе геморрой не всегда лучший выход.
Akopalipsis
25.12.2013, 01:56
Придумывать себе геморрой не всегда лучший выход.
Спасибо! Но я выбираю - немного помучиться:) Так интересней.
Dukobpa3
25.12.2013, 02:24
Ну считай тогда.
Там всего 9 цифр :)
Арифметика 6-й класс. Просто при последовательных преобразованиях легко что-то упустить.
(синус и косинус в данном контексте можно как тригонометрические функции не рассматривать, а тангенс с котангенсом это деление синуса на косинус и наоборот)
Akopalipsis
25.12.2013, 16:12
В хелепе написано -
Класс Matrix можно использовать только в двухмерном пространстве, поэтому при его использовании всегда подразумевается, что значения свойств u и v равны 0,0; значение свойства w равно 1,0.
Получается, чтобы я не делал, их значения всегда будут неизменны?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.