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

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

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

Регистрация: Sep 2006
Сообщений: 2
Question Матрицы(векторы)

Возникла такая проблема -
есть вектор [x,y,z],
нужно его повернуть на некоторый угол.
Есть ли в as ф-ии работы с векторами(матрицами)?
Самому писать лень...

Старый 23.09.2006, 01:09
Хемуль вне форума Посмотреть профиль Отправить личное сообщение для Хемуль Найти все сообщения от Хемуль
  № 2  
Ответить с цитированием
Хемуль
Квач
 
Аватар для Хемуль

Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
2 Alexhhh:
Ищите в справке flash.geom.Matrix.
Также может вам пригодиться это: http://www.senocular.com/pub/kirupa/...torthread.html
И это: http://chattyfig.figleaf.com/piperma...er/014795.html


Последний раз редактировалось Хемуль; 23.09.2006 в 01:12.
Старый 23.09.2006, 12:36
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
flash.geom.Matrix будет работать с двухмерным вектором, а не с трехмерным.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 23.09.2006, 12:47
miramax вне форума Посмотреть профиль Отправить личное сообщение для miramax Посетить домашнюю страницу miramax Найти все сообщения от miramax
  № 4  
Ответить с цитированием
miramax
 
Аватар для miramax

Регистрация: Oct 2005
Адрес: Борисоглебск
Сообщений: 1,702
Отправить сообщение для miramax с помощью ICQ Отправить сообщение для miramax с помощью AIM Отправить сообщение для miramax с помощью MSN Отправить сообщение для miramax с помощью Yahoo Отправить сообщение для miramax с помощью Skype™
У Silin'а есть исходники трёхмерных моделек. Там сначала объявляются вершины модели, потом полигоны, потом текстуры на кажды полигон. Только всё это под AS 3.0
http://silin.fatal.ru
__________________
AS3 | www.FLAPS.ru | Русские флэшеры самые умные флэшеры в мире. ©

Старый 24.09.2006, 22:27
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 5  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Вот пример поворота точки на произовольный угол, может поможет
Стандартный способ перемножения 7-ми матриц мне не подошел, т.к. если возникали частные случаи (ось поворота совпадала с коорд. осью) он не работал.
Код:
//модуль оси поворота
var wmod=_global.Math.sqrt(w[0]*w[0]+w[1]*w[1]+w[2]*w[2]);
//нормализация оси поворота
var axis=(wmod>0.001) ? [w[0]/wmod, w[1]/wmod, w[2]/wmod] : [0,0,1];
//расчет трансформы поворота вокруг произвольной оси
//содрано со статьи автора fowrel@yandex.ru, сайт не помню
//-------------------------------------------
//wmod - uгол поворота (назван так, пото мучто здесь это модуль угловой скорости
//axis - единичный вектор, символизирующий ось поворота
//o=[ox,oy,oz] - координаты начала вектора ахis
var angle=wmod*0.01;
var angleCos=Math.cos(angle), angleSin=Math.sin(angle);
var x=axis[0]*angleSin;
var y=axis[1]*angleSin;
var z=axis[2]*angleSin;
var w=angleCos;
var xx=x*x, xy=x*y, xz=x*z, xw=x*w;
var yy=y*y, yz=y*z, yw=y*w;
var zz=z*z, zw=z*w;
var W=[
	1 - 2*(yy+zz),		2*(xy-zw),		2*(xz+yw),		0,
	2*(xy+zw),	1 - 2*(xx+zz),		2*(yz-xw),		0,
	2*(xz-yw),		2*(yz+xw),	1 - 2*(xx+yy),		0,
	0,				0,				0,		1];
var F=[
	1,0,0,-o[0],
	0,1,0,-o[1],
	0,0,1,-o[2],
	0,0,0,1];
var F1=[
	1,0,0,o[0],
	0,1,0,o[1],
	0,0,1,o[2],
	0,0,0,1];
var t=mXm(mXm(F1,W),F);//конечная матрица поворота вокруг произвольной оси axis
//-------------------------------------------
//mXm-функция перемножения матриц
/*m1Xm0=function(m1, m0){
	return [
		m1[0]*m0[0] + m1[1]*m0[4] + m1[2]*m0[8] + m1[3]*m0[12],
		m1[0]*m0[1] + m1[1]*m0[5] + m1[2]*m0[9] + m1[3]*m0[13],
		m1[0]*m0[2] + m1[1]*m0[6] + m1[2]*m0[10] + m1[3]*m0[14],
		m1[0]*m0[3] + m1[1]*m0[7] + m1[2]*m0[11] + m1[3]*m0[15],

		m1[4]*m0[0] + m1[5]*m0[4] + m1[6]*m0[8] + m1[7]*m0[12],
		m1[4]*m0[1] + m1[5]*m0[5] + m1[6]*m0[9] + m1[7]*m0[13],
		m1[4]*m0[2] + m1[5]*m0[6] + m1[6]*m0[10] + m1[7]*m0[14],
		m1[4]*m0[3] + m1[5]*m0[7] + m1[6]*m0[11] + m1[7]*m0[15],

		m1[8]*m0[0] + m1[9]*m0[4] + m1[10]*m0[8] + m1[11]*m0[12],
		m1[8]*m0[1] + m1[9]*m0[5] + m1[10]*m0[9] + m1[11]*m0[13],
		m1[8]*m0[2] + m1[9]*m0[6] + m1[10]*m0[10] + m1[11]*m0[14],
		m1[8]*m0[3] + m1[9]*m0[7] + m1[10]*m0[11] + m1[11]*m0[15],

		m1[12]*m0[0] + m1[13]*m0[4] + m1[14]*m0[8] + m1[15]*m0[12],
		m1[12]*m0[1] + m1[13]*m0[5] + m1[14]*m0[9] + m1[15]*m0[13],
		m1[12]*m0[2] + m1[13]*m0[6] + m1[14]*m0[10] + m1[15]*m0[14],
		m1[12]*m0[3] + m1[13]*m0[7] + m1[14]*m0[11] + m1[15]*m0[15]];
};*/
Если требуется повернуть вокруг начала координат, удаляешь матрицы F и F1, тогда матрица W - конечная
P.S. Если верить fowrel@yandex.ru, то данная штука переделана с исходников Unreal Tournament


Последний раз редактировалось expl; 24.09.2006 в 22:30.
Создать новую тему Ответ Часовой пояс GMT +4, время: 03:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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