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

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

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

Регистрация: Jul 2008
Адрес: Рига
Сообщений: 176
Attention 3D точка в 2D

Вопрос больше алгебраический. Подскажите, пожалуйста, как получть глобальные 2D координаты клипа [номер1], который вложен в [номер2], если [номер2] подвергся rotationX трансформации. Эти 2D координаты должны визуально соответствовать текущей позиции клипа [номер2].

Для наглядности приложил простенький пример. Искомая 2D точка - красный кружок.
Изображения
 

Старый 28.05.2013, 19:27
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 2  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
local3DToGlobal()?
__________________
Дети не должны знать о своих родителях

Старый 28.05.2013, 19:27
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 3  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Так есть же функция в as3, local3DToGlobal(poin3d:Vector3D) вот ей и воспользуейтесь.

Старый 29.05.2013, 00:37
Александр Мостовой вне форума Посмотреть профиль Отправить личное сообщение для Александр Мостовой Посетить домашнюю страницу Александр Мостовой Найти все сообщения от Александр Мостовой
  № 4  
Ответить с цитированием
Александр Мостовой
 
Аватар для Александр Мостовой

Регистрация: Sep 2001
Адрес: Харьков
Сообщений: 305
Отправить сообщение для Александр Мостовой с помощью ICQ Отправить сообщение для Александр Мостовой с помощью Skype™
Если чисто алгебраически, вне контекста вложеных спрайтов, а на уровне абстрактной 3Д точки:
Код AS3:
var point3D:Vector3D = new Vector3D (30, 40, 50);
var center:Point = new Point (stage.StageWidth / 2, stage.stageHeight / 2); //Положение точки схода-камеры. то есть наш уровень глаз откуда расходятся лучи перспективы.
var distance:Number = 100; //расстояние до точки
 
rotatePoint3DAroundAxisX(point3D, Math.PI / 6);
var point2D:Point = get2DPointFrom3Dpoint (point3D, distance, center);
 
private function rotatePoint3DAroundAxisX(point:Vector3D , alpha:Number):void
{
	var  cosA:Number = Math.cos(alpha);
	var  sinA:Number = Math.sin(alpha);
	var xx:Number  = point.x;
	var yy:Number  = point.y * cosA - point.z * sinA;
	var zz:Number  = point.y * sinA + point.z * cosA;
	point.x = xx;
	point.y = yy;
	point.z = zz;
 
};
 
private function get2DPointFrom3Dpoint(point3D:Vector3D, distance:Number, center:Point):Point
{
	//В нашем случае камера перспективы совпадает с направлением Z. Мы как бы смотрим с тыльной стороны оси Z координатной системы вглубь
	var distortionByZ:Number = (point3D.z / distance + 1);
	var point2D:Point = new Point();
	point2D.x = center.x + point3D.x / distortionByZ;
	point2D.y = center.y - point3D.y / distortionByZ;
	return point2D;
 
};
Но фактически вы не увидите ничего объемного на одной точке. Она просто изменит совю координату. Что бы заметить объем нужна гркппа точек. Ну а вообще с такмим штукаи удобнее с матрицами работать, т.к. не нужно складывать много тригонометрии при повороте, а достаточно умножить коэффициенты в матрицах. Вы можете заметить что первая функция по сутити вычисляет детерминант матрицы 2х2
__________________
...

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

Теги
2Д в 3Д , 3D rotation , rotationX

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

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


 


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


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