Вращающийся куб! @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 7 ] 
*   Список форумов / Технологии изображения / Flash » ответить » создать топик « | »
Автор Сообщение
winann Жен.
новый человек
0
Сообщения: 46
Зарегистрирован: 02.12.04
Откуда: Minsk
Заголовок сообщения: Вращающийся куб!
Сообщение Добавлено: 21 Февраль 2005, 13:57:30 
Большой, большой вопрос!
Может у кого имеется скриптец вращающегося кубика?
Нужно по наведению мыши на ссылку, чтобы появлялась грань кубика. При этом, чтобы сохранялась его объемность.
Может кто-то уже сталкивался с подобным и может подсказать как это реализовать во Flash?

_________________
www.winann.com
nuran
«Лектор»
46
Сообщения: 1569
Зарегистрирован: 21.05.04
Сообщение Добавлено: 23 Февраль 2005, 03:36:36 
Не знаю, я вот давно писал, но это явно не то, что тебе надо:

Код:
vertex = function (x, y, z)
{
   this.x = x;
   this.y = y;
   this.z = z;
};
vertex.prototype.rotateXY = function (sinX, cosX, sinY, cosY)
{
   //Rotates around of the X & Y axes
   var yp = this.y * cosY - this.z * sinY;
   var zp = this.y * sinY + this.z * cosY;
   var xp = this.x * cosX + zp * sinX;
   var zp = -this.x * sinX + zp * cosX;
   this.x = xp;
   this.y = yp;
   this.z = zp;
};
vertex.prototype.perspective = function ()
{
   //Transforms from 3d to 2d.
   var perRatio = 1 / (this.z / distance + 1);
   this.rx = center.x - this.x * perRatio;
   this.ry = center.y + this.y * perRatio;
};
face = function (v1, v2, v3, v4)
{
   this.v1 = v1;
   this.v2 = v2;
   this.v3 = v3;
   this.v4 = v4;
};
face.prototype.draw = function ()
{
   var shadow = 140 + ((v[this.v1].rx + v[this.v2].rx + v[this.v3].rx + v[this.v4].rx) - (v[this.v1].ry + v[this.v2].ry + v[this.v3].ry + v[this.v4].ry)) / 4;
   _root.lineStyle (0, 0x000000, 100);
   _root.beginFill (shadow << 16 | shadow << 8 | shadow, 100);
   _root.moveTo (v[this.v1].rx, v[this.v1].ry);
   _root.lineTo (v[this.v2].rx, v[this.v2].ry, v[this.v3].rx, v[this.v3].ry);
   _root.lineTo (v[this.v3].rx, v[this.v3].ry, v[this.v4].rx, v[this.v4].ry);
   _root.lineTo (v[this.v4].rx, v[this.v4].ry, v[this.v1].rx, v[this.v1].ry);
   _root.endFill ();
};
face.prototype.fill = function ()
{
   var clockwise = ((v[this.v2].rx - v[this.v1].rx) * (v[this.v3].ry - v[this.v1].ry) - (v[this.v2].ry - v[this.v1].ry) * (v[this.v3].rx - v[this.v1].rx));
   if (clockwise >= 0) {
      this.draw ();
   }
};
_root.onLoad = function ()
{
   sin = Math.sin;
   cos = Math.cos;
   // define center
   center = new vertex (250, 250, 0);
   distance = 200;
   // Math.PI / 180;
   rad = .0174532925;
   var sx = 75;
   var sy = 75;
   var sz = 75;
   // init of the vertex
   v = new Array ();
   v[0] = new vertex (sx, -sy, sz);
   v[1] = new vertex (sx, sy, sz);
   v[2] = new vertex (sx, sy, -sz);
   v[3] = new vertex (sx, -sy, -sz);
   v[4] = new vertex (-sx, -sy, -sz);
   v[5] = new vertex (-sx, sy, -sz);
   v[6] = new vertex (-sx, sy, sz);
   v[7] = new vertex (-sx, -sy, sz);
   // init of the faces
   f = new Array ();
   f[0] = new face (3, 2, 1, 0);
   f[1] = new face (2, 3, 4, 5);
   f[2] = new face (7, 6, 5, 4);
   f[3] = new face (0, 1, 6, 7);
   f[4] = new face (7, 4, 3, 0);
   f[5] = new face (1, 2, 5, 6);
};
//
//############################################################
//                                                          ##
// ###   ### ###    ### ########## ########## ###   #########
// ####  ### ###    ### ###    ### ###    ### ####  ###
// ### # ### ###    ### #########  ########## ### # ###
// ###  #### ###    ### ###    ##  ##      ## ###  ####
// ###   ###  ########  ###     ## ###    ### ###   ### TM
//
// 3D CUBE
// © 2002 Grigory Ryabov.
// www.nuran.org
//
this.onEnterFrame = function ()
{
   var xa = (_ymouse - center.x) * 0.0007;
   var ya = (_xmouse - center.y) * 0.0007;
   var sinY = sin (ya);
   var cosY = cos (ya);
   var sinX = sin (xa);
   var cosX = cos (xa);
   for (var i = 0; i < v.length; i++) {
      v[i].rotateXY (sinY, cosY, sinX, cosX);
      v[i].perspective ();
   }
   _root.clear ();
   // fill the right side face
   f[0].fill ();
   // fill the front face
   f[1].fill ();
   // fill the left side face
   f[2].fill ();
   // fill the back face
   f[3].fill ();
   // fill the bottoms face
   f[4].fill ();
   // fill the top face
   f[5].fill ();
};
stop ();

_________________
blog : flash / unity
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 23 Февраль 2005, 14:03:53 
эй, ты за что ево убил? :laugh:

_________________
можно на ТЫ.
idweb Муж.
плагиатор
0
Сообщения: 109
Зарегистрирован: 15.02.05
Сообщение Добавлено: 23 Февраль 2005, 15:09:37 
могу скинуть скриптец на куб , пример http://www.slproject.ru
winann Жен.
новый человек
0
Сообщения: 46
Зарегистрирован: 02.12.04
Откуда: Minsk
Сообщение Добавлено: 1 Март 2005, 16:03:39 
Спасибо большое.. надеюсь, что поможет.)

_________________
www.winann.com
LEGushka
новый человек
0
Сообщения: 18
Зарегистрирован: 10.03.05
Откуда: Kazan
Сообщение Добавлено: 12 Март 2005, 12:51:04 
nuranius, простой вопрос какое отношение имеешь к
############################################################
##
### ### ### ### ########## ########## ### #########
#### ### ### ### ### ### ### ### #### ###
### # ### ### ### ######### ########## ### # ###
### #### ### ### ### ## ## ## ### ####
### ### ######## ### ## ### ### ### ### TM
?

_________________
Думал что мечта ускальзнула а нет.…
LEGushka
новый человек
0
Сообщения: 18
Зарегистрирован: 10.03.05
Откуда: Kazan
Сообщение Добавлено: 14 Март 2005, 11:39:56 
nuranius, у мня большая просьба можешь обяснить по подробнее свой пример
как математик я представляю себе 3х мерное измерение на плоскости=)
мне просто не хватает знаний как это работает во влеше???
за пример и сайт санкс

_________________
Думал что мечта ускальзнула а нет.…
*   Список форумов / Технологии изображения / Flash « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 7 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100