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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Работа над сайтом > 3D

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 27.02.2004, 13:55
opex вне форума Посмотреть профиль Отправить личное сообщение для opex Найти все сообщения от opex
  № 15  
opex
 
Аватар для opex

Регистрация: Sep 2003
Адрес: Где-то рядом.
Сообщений: 686
Отправить сообщение для opex с помощью ICQ Отправить сообщение для opex с помощью Skype™
Код:
MovieClip.prototype.drawLineTo = function(x1, y1, x2, y2, x3, y3, x4, y4, x) {
	this.createEmptyMovieClip("link", 0);
	this.link.beginFill(0x002200, 100);
	this.link.moveTo(x1, y1);
	this.link.lineTo(x2, y2);
	this.link.lineTo(x3, y3);
	this.link.lineTo(x4, y4);
	this.link.lineTo(x1, y1);
	this.link.onPress = function() {
		trace(x);
	};
};
// координаты первой вершины
v1x = 75;
v1y = -75;
v1z = 75;
// координаты второй вершины
v2x = 75;
v2y = 75;
v2z = 75;
// координаты третьей вершины
v3x = 75;
v3y = 75;
v3z = -75;
// координаты четвёртой вершины
v4x = 75;
v4y = -75;
v4z = -75;
// координаты пятой вершины
v5x = -75;
v5y = -75;
v5z = -75;
// координаты шестой вершины
v6x = -75;
v6y = 75;
v6z = -75;
// координаты седьмой вершины
v7x = -75;
v7y = 75;
v7z = 75;
// координаты восьмой вершины
v8x = -75;
v8y = -75;
v8z = 75;
function rotate3d(xa, ya) {
	// вращаем вершины с 1 по 8 на угол xa по оси X
	// и на угол ya по оси Y
	// Задаём коэффициент для перевода градусов в радианы и обратно
	rad = Math.PI/180;
	// Вычисляем косинусы и синусы углов
	// Это нужно обязательно сделать перед циклом
	// дабы избежать многочисленных и ненужных вычислений 
	// одних и тех же значений в цикле
	cosXangle = Math.cos(xa*rad);
	sinXangle = Math.sin(xa*rad);
	cosYangle = Math.cos(ya*rad);
	sinYangle = Math.sin(ya*rad);
	for (var i = 1; i<=8; i++) {
		//- вращение вокруг оси X
		ry = this["v"+i+"y"]*cosXangle-this["v"+i+"z"]*sinXangle;
		rz = this["v"+i+"y"]*sinXangle+this["v"+i+"z"]*cosXangle;
		//- вращение вокруг оси Y
		rx = this["v"+i+"x"]*cosYangle+rz*sinYangle;
		rz = -this["v"+i+"x"]*sinYangle+rz*cosYangle;
		// делаем нормальные координаты повёрнутыми
		this["v"+i+"x"] = rx;
		this["v"+i+"y"] = ry;
		this["v"+i+"z"] = rz;
	}
}
// #################################################
// ЭТО ПРИЛОЖЕНИЕ К УРОКУ С САЙТА flash.plux.ru
// "3d талмуд для начинающих".
// АВТОР: Григорий А. Рябов (Nuran)
// e-mail: nuramedia@mail.ru
// #################################################
_root.onEnterFrame = function() {
	// задаём координаты ценра клипа
	cnx = 250;
	cny = 250;
	// задаём расстояние от центра мировых координат (0,0,0)
	// до точки просмотра
	dist = 200;
	// удаляем старые линии
	_root.clear();
	// вычисляем углы курсора
	xa = -(cnx-_ymouse)/25;
	ya = (cny-_xmouse)/25;
	// вращаем все вершины на углы курсора
	rotate3d(xa, ya);
	// вывод куба с перспективой
	_root.lineStyle(0, 0x000000, 100);
	_root.drawLineTo(cnx+v1x*(dist/(dist+v1z)), cny+v1y*(dist/(dist+v1z)), cnx+v2x*(dist/(dist+v2z)), cny+v2y*(dist/(dist+v2z)), cnx+v3x*(dist/(dist+v3z)), cny+v3y*(dist/(dist+v3z)), cnx+v4x*(dist/(dist+v4z)), cny+v4y*(dist/(dist+v4z)), "bla bla bla");
	_root.moveTo(cnx+v1x*(dist/(dist+v1z)), cny+v1y*(dist/(dist+v1z)));
	_root.lineTo(cnx+v2x*(dist/(dist+v2z)), cny+v2y*(dist/(dist+v2z)));
	_root.lineTo(cnx+v3x*(dist/(dist+v3z)), cny+v3y*(dist/(dist+v3z)));
	_root.lineTo(cnx+v4x*(dist/(dist+v4z)), cny+v4y*(dist/(dist+v4z)));
	_root.lineTo(cnx+v1x*(dist/(dist+v1z)), cny+v1y*(dist/(dist+v1z)));
	_root.lineTo(cnx+v8x*(dist/(dist+v8z)), cny+v8y*(dist/(dist+v8z)));
	_root.lineTo(cnx+v7x*(dist/(dist+v7z)), cny+v7y*(dist/(dist+v7z)));
	_root.lineTo(cnx+v2x*(dist/(dist+v2z)), cny+v2y*(dist/(dist+v2z)));
	_root.moveTo(cnx+v8x*(dist/(dist+v8z)), cny+v8y*(dist/(dist+v8z)));
	_root.lineTo(cnx+v5x*(dist/(dist+v5z)), cny+v5y*(dist/(dist+v5z)));
	_root.lineTo(cnx+v6x*(dist/(dist+v6z)), cny+v6y*(dist/(dist+v6z)));
	_root.lineTo(cnx+v7x*(dist/(dist+v7z)), cny+v7y*(dist/(dist+v7z)));
	_root.moveTo(cnx+v4x*(dist/(dist+v4z)), cny+v4y*(dist/(dist+v4z)));
	_root.lineTo(cnx+v5x*(dist/(dist+v5z)), cny+v5y*(dist/(dist+v5z)));
	_root.moveTo(cnx+v3x*(dist/(dist+v3z)), cny+v3y*(dist/(dist+v3z)));
	_root.lineTo(cnx+v6x*(dist/(dist+v6z)), cny+v6y*(dist/(dist+v6z)));
};
сделал на шару спешу в универ на основе исходников nuran'a
может быть и не подойдет не знаю
__________________
Бойтесь китайцев, компы приносящих!

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

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

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


 


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


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