Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.06.2012, 22:57
Den_root вне форума Посмотреть профиль Отправить личное сообщение для Den_root Найти все сообщения от Den_root
  № 1  
Ответить с цитированием
Den_root

Регистрация: Feb 2012
Сообщений: 36
По умолчанию Преобразования с матрицей

Доброго времени суток! Как повернуть 2D матрицу, что бы она смотрела в направлении 2D вектора? Вопрос относится скорее к алгебре чем к AS3, но все же!

Старый 11.06.2012, 23:10
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
по отдельности ( повернуть - Matrix#rotate, угол - Math.atan2) какбе понятно
а вместе, ну что бы она смотрела куда-то что-то не складывается, матрица вообще куда смотрит ?
может переформулируешь

Старый 11.06.2012, 23:20
Den_root вне форума Посмотреть профиль Отправить личное сообщение для Den_root Найти все сообщения от Den_root
  № 3  
Ответить с цитированием
Den_root

Регистрация: Feb 2012
Сообщений: 36
Например если вектор (0.70,0.70), то он повернут на 45° нужно, что бы и матрица была повернута на 45° Надо как то хитро подставить координаты вектора в матрицу.
[0.70 0.70
a b ]
Вот a и b не знаю как найти.

Старый 11.06.2012, 23:29
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код AS3:
var mtrx:Matrix = new Matrix();
var angle:Number = Math.atan2(0.7, 0.7);
mtrx.rotate(angle);

Старый 11.06.2012, 23:49
Den_root вне форума Посмотреть профиль Отправить личное сообщение для Den_root Найти все сообщения от Den_root
  № 5  
Ответить с цитированием
Den_root

Регистрация: Feb 2012
Сообщений: 36
А нет ли способа по проще, без тригонометрии? Нельзя ли решить дело подстановкой?

Старый 12.06.2012, 00:07
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
На сколько я понимаю, нет, да и быть не может, т.е. можно те же действия сделать по другому, например:
Код:
[cos(a), -sin(a)]
[sin(a),  cos(a)]
Но вам все равно нужно рассчитать угол, ну или зная, что значения в векторе можно воспринимать как катеты, то можно сразу же считать синус и косинус. Но сколько от этого будет профита - я не знаю.
__________________
Hell is the possibility of sanity

Старый 12.06.2012, 00:16
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 7  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
коэффициенты матрицы это синусы/косинусы этого вектора, можно их напрямую считать и подставлять
только мне не кажется, что это проще

Добавлено через 2 минуты
wvxvw, угол можно и не считать, типа cos=x/sqrt(x^2+y^2)

Старый 21.06.2012, 02:56
Den_root вне форума Посмотреть профиль Отправить личное сообщение для Den_root Найти все сообщения от Den_root
  № 8  
Ответить с цитированием
Den_root

Регистрация: Feb 2012
Сообщений: 36
Вот просветите, matrix и matrix3D как то по разному просчитываются? Я повернул обе матрицы на -90 градусов и получил неодинаковые результаты. Например, насколько я понимаю, второй элемент matrix3D(вторая цифра trace) эквивалентен с элементу matrix, но они имеют разные знаки!
Код AS3:
matrix : (a=0, b=-1, c=1, d=0, tx=0, ty=-0)
matrix3D :0,-1,0,0,   1,0,0,0,   0,0,1,0,   0,0,0,1


Последний раз редактировалось Den_root; 21.06.2012 в 03:05.
Старый 21.06.2012, 03:53
vizgl вне форума Посмотреть профиль Отправить личное сообщение для vizgl Найти все сообщения от vizgl
  № 9  
Ответить с цитированием
vizgl
 
Аватар для vizgl

Регистрация: Jun 2012
Сообщений: 70
Цитата:
Сообщение от Den_root Посмотреть сообщение
Вот просветите, matrix и matrix3D как то по разному просчитываются? Я повернул обе матрицы на -90 градусов и получил неодинаковые результаты. Например, насколько я понимаю, второй элемент matrix3D(вторая цифра trace) эквивалентен с элементу matrix, но они имеют разные знаки!
Код AS3:
matrix : (a=0, b=-1, c=1, d=0, tx=0, ty=-0)
matrix3D :0,-1,0,0,   1,0,0,0,   0,0,1,0,   0,0,0,1
Они по определению не могут по разному просчитываться. 2д матрица имеет размерность 3x3, а 3д 4x4.

2d:
ax, ay, 0
bx, by, 0
tx, ty, 1

или так, в терминологии as3
a, b, 0
c, d, 0
tx, ty, 1

3d:
ax, ay, az, 0
bx, by, bz, 0
cx, cy, cz, 0
tx, ty, tz, 1

Вот и смотри, какие коэффициенты должны быть равны.
__________________
Блог: http://devizgl.blogspot.com/


Последний раз редактировалось vizgl; 21.06.2012 в 03:55.
Старый 21.06.2012, 14:02
Den_root вне форума Посмотреть профиль Отправить личное сообщение для Den_root Найти все сообщения от Den_root
  № 10  
Ответить с цитированием
Den_root

Регистрация: Feb 2012
Сообщений: 36
vizgl Так разве c и bx не должны быть равны?

2d:
a, b, 0
c, d, 0
tx, ty, 1

3d:
ax, ay, az, 0
bx, by, bz, 0
cx, cy, cz, 0
tx, ty, tz, 1


Я даже на бумажке, в ручную повернул и с должен быть -1
а,с это вектор оси х равный (1,0), при повороте его на -90 он будет равен (0,-1), но никак не (0,1) Это если для флешевского пространства координат где ось у направленна вниз.


Последний раз редактировалось Den_root; 21.06.2012 в 14:21.
Создать новую тему Ответ Часовой пояс GMT +4, время: 02:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:34.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.