Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 3д самолет, скрипты Macromedia Director MX, все внутри 
:(
    Опции темы
Norfonzor
  Дата 23.4.2009, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 17.10.2008

Репутация: нет
Всего: нет



Добрый день!
задали задачку по компьютерному моделированию, сейчас даже не знаю как ее решить.
суть задачи в следующем:
дана 3д модель самолета, самолет находится в 3д пространстве x-y-z.
Существует программа (алгоритм написанный на делфи) который в зависимости от времени (t, меняющееся от 0 до 100сек) выдает углы наклона самолета. в процессе работы программы самолет должен менять в 3д свое положение относительно осей координат. 

используя програмку Macromedia Director MX 2004,
я сейчас сделал самолет вращающийся по нажатию клавишь,

скрипт в Macromedia Director MX 2004:
Код:
Код

on enterFrame me
if keyPressed ("a") then
member ("boing5").model("plane").rotate(0,2,0)
end if
if keyPressed ("d") then
member ("boing5").model("plane").rotate(0,-2,0)
end if
if keyPressed ("w") then
member ("boing5").model("plane").rotate(2,0,0)
end if
if keyPressed ("s") then
member ("boing5").model("plane").rotate(-2,0,0)
end if
if keyPressed ("q") then
member ("boing5").model("plane").rotate(0,0,2)
end if
if keyPressed ("e") then
member ("boing5").model("plane").rotate(0,0,-2)
end if
if keyPressed ("r") then
member("boing5").resetWorld( )
end if
end



у меня задан цикл в котором происходит высчитывание углов ox, oy, oz.
в начале высчитываются определители импульсов (1 раз за время работы программы):

Код:
Код


t:=0;
fi_t:=1;

fi:=1;
gam:=1;
O:=1;

p_fi:=
j_x*(fi_t*sin(gam)*sin(O)+O_t*cos(gam))*sin(gam)+J_y*(fi_t*cos(gam)*si n(O)-O_t*sin(gam))*cos(gam)+
J_z*(fi_t*cos(O)+gam_t)*cos(O);

p_gam:=J_z*(fi_t*cos(O)+gam_t);

p_O:=j_x*(fi_t*sin(gam)*sin(O)+O_t*cos(gam))*cos(gam)-J_y*(fi_t*cos(ga m)*sin(O)-O_t*sin(gam))*sin(gam);

del_0:=0.5*J_x*J_X*J_Z*(3-cos(4*gam))*sin(O)+0.5*J_X*J_Y*J_Z*(3+cos(4* gam))*sin(O)+J_Z*J_Z*(J_X+J_Y)*
(1-cos(2*gam))*(1-cos(2*O))+0.5*J_y*J_y*J_Z*(1-cos(4*gam))-
0.5*(1-cos(4*gam))*({} (J_X*J_X*J_Z-J_x*J_Y*J_Z)*cos(O)+(J_Y*J_Y*J_Z-J_X*J_Y*J_Z)*sin(O) )-
0.5*({} J_X*J_Z*J_Z*(1+cos(2*gam))+J_Y*J_Z*J_Z*(1-cos(2*gam)) )*(3*cos(O)+cos(3*O));


del_fi:=2*({} J_x*J_Z*(1+cos(2*gam))+J_Y*J_Z*(1-cos(2*gam)) )*p_fi-2*(J_X*J_Z*sin(2*gam)-J_Y*J_z*sin(2*gam))*p_O-
({} J_X*J_Z*(1-cos(2*gam))+J_y*J_Z*(1+cos(2*gam)) )*(1+cos(2*O))*p_O;

del_gam:=({} 0.5*J_x*J_X*(3-cos(4*gam))*sin(O)+0.5*J_X*J_y*(3+cos(4*gam))*sin(O) )*p_gam+
2*({} J_X*J_Z*sin(2*gam)-J_y*J_Z*sin(2*gam) )*cos(O)*p_O-
0.5*(1-cos(4*gam))*({} (J_X*J_X-J_x*J_Y)*cos(O)+(J_Y*J_Y-J_X*J_Y)*sin(O) )*p_gam-
2*({} J_X*J_Z*(1+cos(2*gam))+J_Y*J_Z*(1-cos(2*gam)) )*cos(O)*p_fi; {??? какойто еще "+"}


del_O:=({} J_X*J_z*(1-cos(2*gam))*sin(O)+J_Y*J_Z*(1+cos(2*gam))*sin(O)+J_Z*J_z*(1 +cos(2*O)) )*p_O+
0.5*({} J_x*J_z*sin(2*gam)*(3*cos(O)+cos(3*O))-J_Y*J_Z*sin(2*gam)*(3*sin(O)+si n(3*O)) )*p_gam-
({} J_X*J_z*sin(2*gam)*cos(O)-J_y*J_Z*sin(2*gam)*sin(O) )*p_gam-0.5*J_Z*J_Z*(3*cos(O)+cos(3*O) )*p_O;


{5}D_gam_del_0:=2*J_x*(J_x*J_z-J_y*J_z)*sin(4*gam)*sin(O)+2*J_z*J_z*(J _x+J_y)*sin(2*gam)*(1-cos(2*O))+2*J_y*J_y*J_z*sin(4*gam)-
2*sin(4*gam)*({} (J_x*J_x*J_z-J_x*J_y*J_z)*cos(O)+(J_y*J_y*J_z-J_x*J_y*J_z)*sin(O))+J_z *J_z*(J_x-J_y)*sin(2*gam)*
(3*cos(O)+cos(3*O));

{6}D_O_del_0:=0.5*J_X*J_X*J_Z*(3-cos(4*gam))*cos(o)+0.5*J_X*J_Y*J_Z*(3 +cos(4*gam))*cos(O)+
2*J_Z*J_Z*(J_x+J_y)*(1-cos(2*gam))*sin(2*o)+0.5*J_Y*J_Y*J_Z*(1-cos(4*g am))-
0.5*(1-cos(4*gam))*( J_X*J_Z*(J_x-J_Y)*sin(O)+J_Y*J_z*(J_x-J_Y)*cos(o))-
1.5*J_z*J_Z*(J_x*J_Z*J_z*(1+cos(2*gam))+J_Y*J_Z*J_Z*(1-cos(2*gam)) )*(sin(o)+sin(3*o));

{7}D_gam_del_fi:=
-4*J_Z*(J_X*sin(2*gam)-J_Y*sin(2*gam))*p_fi-4*J_z*(J_x*cos(2*gam)-J_y* cos(2*gam))*p_o-
2*J_z*(J_x*sin(2*gam)-J_Y*sin(2*gam))*(1+cos(2*O))*p_O;

{8} D_O_Del_fi:=2*J_z*(J_x*(1-cos(2*gam))+J_y*(1+cos(2*gam)) )*sin(2*O*p_O);

{9} D_gam_del_gam:=2*J_x*(J_x*sin(4*gam)*sin(O)-J_y*sin(4*gam)*sin(O))*p_g am+4*J_z*
(J_x*cos(2*gam)-J_y*cos(2*gam))*cos(O)*p_O-2*sin(4*gam)*(1-cos(4*gam)) *
((J_x*J_x-J_x*J_y)*cos(O)+(J_y*J_y-J_x*J_y)*sin(O))*p_gam-2*J_z*(J_x*( 1+cos(2*gam))+
J_y*(1-cos(2*gam)))*cos(O)*p_fi;

{10} D_O_Del_gam:=0.5*J_x*( J_x*(3-cos(4*gam))*cos(O)+J_y*(3+cos(4*gam) )*cos(O))*p_gam-
2*J_z*(J_x*sin(2*gam)-J_y*sin(2*gam))*sin(O)*p_O+0.5*(1-cos(4*gam))*(J _x*(J_x-J_y)*sin(O)+
J_y*(J_x-J_y)*cos(O) )*p_gam+2*J_z*(J_x*(1+cos(2*gam))+J_y*(1-cos(2*gam)))*sin(O)*p_fi;

{11} D_gam_Del_O:=2*J_z*(J_x*sin(2*gam)-J_y*sin(2*gam))*sin(O)*p_O+J_z*(J_x *cos(2*gam)*(3*cos(O)+
cos(3*O))-J_y*cos(2*gam)*(3*sin(O)+sin(3*O)))*p_gam-J_z*(J_x*cos(2*gam )*cos(O)-
J_y*cos(2*gam)*sin(O))*p_fi;

{12} D_O_Del_O:=J_z*(J_x*(1-cos(2*gam))*cos(O)+J_y*(1+cos(2*gam))*cos(O)-2* J_z*sin(O))*p_O-
(1.5*J_z*(J_x*J_z*sin(2*gam)*(sin(O)+sin(3*O))+J_y*J_z*sin(2*gam)*(cos (O)+cos(3*O))*p_gam))+
J_z*(J_x*cos(2*gam)*cos(O)-J_y*cos(2*gam)*cos(O))*p_fi+(1.5*J_z*J_z*(s in(O)+sin(3*O))*p_O);

{13} D_P_gam_Del_fi:=0;

{14} D_P_fi_Del_O:=0;

{15} D_P_fi_del_fi:=2*(J_x*J_z*(1+cos(2*gam))+J_y*J_z*(1-cos(2*gam)));

{16} D_P_O_del_fi:=-2*J_z*(J_x*sin(2*gam)-J_y*sin(2*gam))-J_z*(J_x*(1-cos(2 *gam))+
J_y*(1+cos(2*gam)))*(1+cos(2*O));

{17} D_P_fi_del_gam:=-2*(J_x*J_z*(1+cos(2*gam))+J_y*J_z*(1-cos(2*gam)))*cos (O);

{18} D_P_gam_Del_gam:=0.5*J_x*( 0.5*J_x*(3-cos(4*gam))*sin(O)+J_y*(3+cos(4*gam))*sin(O) )-
0.5*(1-cos(4*gam))*( (J_x*J_x-J_x*J_y)*cos(O)+(J_y*J_y-J_x*J_y)*sin(O) );

{19} D_P_O_Del_gam:=2*(J_x*J_z*sin(2*gam)-J_y*J_z*sin(2*gam))*cos(O);

{20} D_P_gam_del_O:=0.5*J_z*(J_x*sin(2*gam)*(3*cos(O)+cos(3*O))-J_y*sin(2*g am)*(3*sin(O)+sin(3*O)) );

{21} D_P_O_del_O:=J_z*(J_x*(1-cos(2*gam))*sin(O)+J_y*(1+cos(2*gam))*sin(O)+ J_z*(1+cos(2*O)))+
0.5*J_z*J_z*(3*cos(O)+cos(3*O));




Теперь цикл который повторяется и меняет положение углов (повторяется много раз):

Код:
Код

repeat
{1}
P_fi_t:=0;

{2} {2 proi3vodnaya}
P_gam_t:=(-1/(2*del_0*del_0))*({} 2*J_x*(del_fi*sin(gam)*sin(O)+del_O*cos(gam))*
(D_gam_del_fi*sin(gam)*sin(O)+del_fi*cos(gam)*sin(O)+D_gam_del_O*cos(g am)-del_o*sin(gam))*del_0+
J_x*(del_fi*sin(gam)*sin(O)+del_O*cos(gam))*(del_fi*sin(gam)*sin(O)+de l_O*cos(gam))*D_gam_del_0+
2*J_y*(del_fi*cos(gam)*sin(O)-del_O*sin(gam))*(D_gam_del_fi*cos(gam)*s in(O)+
del_fi*sin(gam)*sin(O)+D_gam_del_O*sin(gam)+del_O*cos(gam))*del_0+
+J_y*(del_fi*cos(gam)*sin(O)-del_O*sin(gam))*(del_fi*cos(gam)*sin(O)-d el_O*sin(gam))*D_gam_del_0+
+2*J_z*(del_fi*cos(O)+del_gam)*(D_gam_del_fi*cos(O)+D_gam_del_gam)*del _0+
J_z*(del_fi*cos(O)+del_gam)*D_gam_del_0 ) ;

{3}
P_O_t:=(-1/(2*del_0*del_0))*({} 2*J_x*(del_fi*sin(gam)*sin(O)+del_O*cos(gam))*
(D_O_del_fi*sin(gam)*sin(O)+del_fi*sin(gam)*cos(O) )*del_0+
J_x*(del_fi*sin(gam)*sin(O)+del_O*cos(gam) )*(del_fi*sin(gam)*sin(O)+del_O*cos(gam) )*D_O_del_0+
2*J_y*(del_fi*cos(gam)*sin(O)-del_O*sin(gam) )*(D_O_del_fi*cos(gam)*sin(O)+del_fi*sin(gam)*cos(O) )*del_0+
J_y*(del_fi*cos(gam)*sin(O)-del_O*sin(gam))*(del_fi*cos(gam)*sin(O)-de l_O*sin(gam))*D_O_del_0+
2*J_z*(del_fi*cos(O)+del_gam)*(D_O_del_fi*cos(O)-del_fi*sin(O)+D_O_del _gam)*del_0+
J_z*(del_fi*cos(O)+del_gam))*D_O_del_0;

{4}
fi_t:=(1/(del_0))*({} (J_x*(del_fi*sin(gam)*sin(O)+del_O*cos(gam))*sin(gam)*sin(O)*D_P_fi_de l_fi+
J_y*(del_fi*cos(gam)*sin(O)-del_O*sin(gam))*cos(gam)*sin(O)*D_P_fi_del _fi+
J_z*(del_fi*cos(O)+del_gam)*cos(O)*D_P_fi_del_fi) );

{5}
gam_t:=(J_z/del_0)*(del_fi*cos(O)+del_gam)*D_P_gam_del_gam;

{6}
O_t:=(1/del_0)*({} (J_x*(del_fi*sin(gam)*sin(O)+del_O*cos(gam))*cos(gam)*D_P_O_del_O+
J_y*(del_fi*cos(gam)*sin(O)-del_O*sin(gam))*sin(gam)*D_P_O_del_O) );

t:=t+0.01;


fi:=fi+fi_t*t;
gam:=gam+gam_t*t;
O:=O+O_t*t;


P_fi:=P_fi+P_fi_t*t;
P_gam:=P_gam+p_gam_t*t;
P_O:=P_O+P_O_t*t;

{СДЕСЬ НАДО ЧТОБЫ САМОЛЕТ ПЕРЕВЕРНУЛСЯ НА УГЛЫ:

0X=fi
0Y=gam
0Z=O

}
until t=120;




ссылка на архив с файлом проекта Macromedia Director MX: http://depositfiles.com/files/haf9cmo0j

J_x, J_y, J_z, fi,gam,O должны задаваться в окне зд самолета.

Пожалуйста эксперты ПОМОГИТЕ!!!
Из языков программирования знаю только делфи. Как формулы можно вставить в Macromedia Director MX?

Это сообщение отредактировал(а) Norfonzor - 23.4.2009, 17:36
PM MAIL   Вверх
Asal
Дата 24.4.2009, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 26.12.2006
Где: Минск

Репутация: 3
Всего: 7



что-то я не понял что Вы хотите и причем здесь Java


--------------------
PM MAIL ICQ   Вверх
Norfonzor
Дата 25.4.2009, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 17.10.2008

Репутация: нет
Всего: нет



надо сделать вот так только с текстурами:
в примере приведен кубик, самолет 7метров весит выкладывать не стал.

Это сообщение отредактировал(а) Norfonzor - 26.4.2009, 11:32

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  ____________.7z 168,19 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.