Strict Standards: Resource ID#35 used as offset, casting to integer (35) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#37 used as offset, casting to integer (37) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#38 used as offset, casting to integer (38) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Углы Эйлера и не только
ТвойWeb » Обо всем понемногу » Поговорим обо всем » Углы Эйлера и не только

Страниц (1): [1]
 

1. Дмитрий Б. - 17 Августа, 2005 - 06:48:49 - перейти к сообщению
Посоветовал мне тут один весьма уважаемый на этом форуме человек заняться 3D графикой в рамках Flash. Подумав насчёт того, чем чёрт шутит, а чем - увы, я, можно сказать, с энтузиазмом взялся за дело: купил в магазине книгу про Flash, поставил себе Flash MX 2004, и вот вчера поздно ночью занялся-таки кодированием. Сегодня столкнулся с первой крупной проблемой.
Как известно, поворот любого объекта в трёхмерной системе координат характеризуется тремя углами - углами Эйлера: мы три раза поворачиваем систему координат, связанную с объектом, вокруг её собственных осей, и таким образом можем сориентировать тело относительно базовой системы координат как нашей душе угодно. Дальше начинаются проблемы. Во-первых: вокруг каких осей мы крутим её? Там, насколько я помню, какое-то хитрое правило вроде этого: сначала крутим вокруг оси x на угол a, получаем систему xy'z'. Потом, по-моему, на угол b вокруг оси теперь уже y' - получаем x'y'z''. А потом - опять вокруг оси x', но уже на угол c, и получаем-таки нужную нам x'y''z''' (или XYZ).
Вопрос № 1: правильно ли я воспроизвёл процесс? Вопрос № 2: может быть, у кого-нибудь есть формулы, по которым можно получить матрицу преобразований для перевода векторов, неподвижных относительно той СК, над которой мы издевались, в неподвижную СК? В принципе, порядочно поматюгавшись, можно вывести эти формулы и самому, но как-то не хочется... Смутно помню, что на лекции препод пытался что-то такое вывести, но потом плюнул. Чем в это время занимался я - лучше и не спрашивать... Самое обидное, что в конспектах, возможно, эти формулы и имеются, но сессия прошла, начались каникулы, так что шанс найти свои конспекты у меня появится не раньше осени. По причине того же лета все книги в библиотеке...
Ладно, на худой конец воспоользуюсь в качестве основного приведённым выше алгоритмом, выведу формулы, но просто не хочется потом переделывать - а то, сдаётся мне, такой математики не будет больше нигде...
И ещё: как от упомянутой матрицы перейти обратно к углам?
2. Дмитрий Б. - 18 Августа, 2005 - 22:05:38 - перейти к сообщению
А, всё, нашёл... Точнее - вывел. Если кому будет надо:
CODE:
x3=(x*Cosb-(y*Sina+z*Cosa)*Sinb)
y3=(y*Cosa-z*Sina)*Cosc-(x*Sinb+(y*Sina+z*Cosa)*Cosb)*Sinc
z3=(y*Cosa-z*Sina)*Sinc+(x*Sinb+(y*Sina+z*Cosa)*Cosb)*Cosc

Тут a - первый поворот вокруг оси x, b - поворот вокруг оси y, c - второй поворот вокруг оси x.
3. Леголегс - 21 Августа, 2005 - 07:55:53 - перейти к сообщению
Дмитрий Б.
Я даже знаю, кто этот уважаемый человек Улыбка
Подумай над оптимизацией, потому что flash это очень тормозно. И советую в тридэ проектах засекать время исполнения частей скрипта и если оно будет очень большим, то останавливаться дабы избежать повисания машины юзера. Помню на 233 МГц просмотр работ ETC'a превращался в неторопливое слайдшоу.
4. Дмитрий Б. - 22 Августа, 2005 - 23:17:53 - перейти к сообщению
Оптимизация? Это я пока флеш учу таким образом... Не думаю, что в будущем соберусь заниматься 3D графикой (равно как не думаю, что продолжу заниматься компами)...
5. ETC - 23 Августа, 2005 - 05:22:57 - перейти к сообщению
Дмитрий Б.
Эти углы применяются в моих исходниках, собственно это и есть самая главная составляющая, а всё остальное - в принципе мусор Улыбка
Оси выбираются не совсем верно, ось х вправо, y вниз, z или вглубь экрана или наружу. (у меня внутрь)
CODE:

// z rotate
y = o.y0*Math.cos(angleZ)+o.x0*Math.sin(angleZ);
x = o.x0*Math.cos(angleZ)-o.y0*Math.sin(angleZ);
// y rotate
z = o.z0*Math.cos(angleY)-x*Math.sin(angleY);
x = x*Math.cos(angleY)+o.z0*Math.sin(angleY);
// x rotate
oy = y;
y = y*Math.cos(angleX)-z*Math.sin(angleX);
z = oy*Math.sin(angleX)+z*Math.cos(angleX);
depth = 1/(1-z/perspective);
o.x = x*fscale;
o.y = y*fscale;
o.z = z*fscale;

собственно это выдрано из моего исходника. А на лекциях их не просто написали, а даже вывели, причём без особых проблем на основе двумерных преобразований поворота СК, ну и матриц...
6. FROZEN - 23 Августа, 2005 - 05:29:52 - перейти к сообщению
ETC

Только не обижайся - что-то похожее в action script'e я видел, когда декомпилировал твои флешки.
7. ETC - 23 Августа, 2005 - 05:41:14 - перейти к сообщению
Если речь идёт о сайтах etcs.ru и x100.etcs.ru, то там этого быть не может Улыбка
Если об исходниках - то там я ничего не шифровал, на то исходники.
Если ты о tx-03.narod.ru то там подобное есть и от декомпиляции он не защищён.
8. FROZEN - 23 Августа, 2005 - 05:56:55 - перейти к сообщению
ETC

Нет, речь о etcs.ru. Просто я во flash не шарю, вот примерно что-то похожее. Здесь выкладывать не буду.
А хотя... Может это и не action script совсем, может ты там так защитил, что фиг получишь исходник! Улыбка
9. ETC - 23 Августа, 2005 - 06:16:53 - перейти к сообщению
http://tvoyweb.ru/forums/topic.p...p;v=l#1124791973
см. сюда.
В общем то, что ты мне продемнострировал - это всего лишь данные и ничего более. Начиная с kernel.xml можно найти всё остальное, это несложно, гостевую найти так не получится, потому что ссылка внутри флешки... хотя задачу я тебе облегчил Улыбка
10. FROZEN - 23 Августа, 2005 - 07:27:29 - перейти к сообщению
ETC

Так я так и делал! Улыбка
Начинал с kernel.xml.
Ладно, все, это уже оффтоп. Улыбка

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0431]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33