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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Обсуждение > Flash-арт

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

Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
Это все оттого, что кода СЛИШКОМ много. Для рассчета вершин полноценного трехмерного объекта с перспективой требуется всего одна строка. Правда длинная.
Код:
createEmptyMovieClip("Fan", 0)._x = Stage.width / 2;
Fan._y = Stage.height / 2;

for (var i=0; i<3; i++) {
 (Fan[i] = Fan.createEmptyMovieClip("B" + i, i)).data = [[0, 10, 10, Math.sqrt(200)], [25, -10, -10, Math.sqrt(725)], [100, -5, 0, Math.sqrt(10025)], [100, 5, 0, Math.sqrt(10025)]];
 Fan[i].draw = function(valuea, valueb) {

// the next block is one line (you may not believe, but it is true)
  for (var i=0; i<4; i++) 
   (i == 0? this.datax = new Array(): this.datax)[i] = 
    [this.R * Math.sin(this._a) * (this.Z + 200) / 200, 
     this.data[i][3] * Math.sin(Math.atan2(this.data[i][1], this.data[i][0]) + valueb * Math.PI / 180) * (this.Z + 200) / 200, 
     this.Z = (this.R = Math.sqrt((this.Z = this.data[i][2])*this.Z + (this.X = this.data[i][3] * Math.cos(Math.atan2(this.data[i][1], this.data[i][0]) + valueb * Math.PI / 180))*this.X)) * Math.cos(this._a = Math.atan2(this.X, this.Z) + valuea * Math.PI / 180)];
// end of block

  this.clear();
  this.lineStyle(0, 0x00, 100);
  this.beginFill(0xCCCCCC, 100);
  this.moveTo((this.datax[3][0] + (this.datax[4] = this.datax[0])[0])/2, (this.datax[3][1] + this.datax[0][1])/2);
  for (var i=0; i<4; i++) this.curveTo(this.datax[i][0], this.datax[i][1], (this.datax[i+1][0] + this.datax[i][0])/2, (this.datax[i+1][1] + this.datax[i][1])/2);
  this.endFill();
  this.swapDepths(this.datax[0][2] + this.datax[1][2] + this.datax[2][2] + this.datax[3][2]);
 }
}

Fan.onEnterFrame = function() {
 for (var i=0; i<3; i++) this[i].draw(180 / Math.PI * Math.atan2(this._ymouse * this._ymouse + this._xmouse * this._xmouse, 40000), (i==0? (this._a += 10) - (this._rotation = 180 / Math.PI * Math.atan2(this._parent._ymouse - this._y, this._parent._xmouse - this._x)): this._a - this._rotation) + 120 * i);
}
__________________
...убивать людей не удовольствия ради, но для еды.

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

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

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


 


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


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