Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с 3D текстом 
:(
    Опции темы
Gigabyte
Дата 16.5.2006, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Студент-халявщик
**


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

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



я делаю псевдо 3d текст с помощью скрипта

Код

vertex = function (x, y, z) {
this.x = x;
this.y = y;
this.z = z;
};

// Функция vertex будет запоминать координаты точки. Это - родитель остальных прототипов.

// прототип поворота вокруг оси X

vertex.prototype.rotateX = function(sinX, cosX) {
var xp = this.x;
var yp = this.y*cosX-this.z*sinX;
var zp = this.y*sinX+this.z*cosX;
this.x = xp;
this.y = yp;
this.z = zp;
};

// прототип поворота вокруг оси Y

vertex.prototype.rotateY = function(sinY, cosY) {
var xp = this.x*cosY+this.z*sinY;
var yp = this.y;
var zp = -this.x*sinY+this.z*cosY;
this.x = xp;
this.y = yp;
this.z = zp;
};

// прототип поворота вокруг оси Z

vertex.prototype.rotateZ = function(sinZ, cosZ) {
var xp = this.x*cosZ-this.y*sinZ;
var yp = this.x*sinZ+this.y*cosZ;
var zp = this.z;
this.x = xp;
this.y = yp;
this.z = zp;
};

// прототип поворота вокруг точки a по оси X

vertex.prototype.rotateX_around_point = function(sinX, cosX, a) {
var xp = this.x;
var yp = a.y+(this.y-a.y)*cosX-(this.z-a.z)*sinX;
var zp = a.z+(this.y-a.y)*sinX+(this.z-a.z)*cosX;
this.x = xp;
this.y = yp;
this.z = zp;
};

// прототип поворота вокруг точки a по оси Y

vertex.prototype.rotateY_around_point = function(sinY, cosY, a) {
var xp = a.x+(this.x-a.x)*cosY+(this.z-a.z)*sinY;
var yp = this.y;
var zp = a.z-(this.x-a.x)*sinY+(this.z-a.z)*cosY;
this.x = xp;
this.y = yp;
this.z = zp;
};

// прототип поворота вокруг точки a по оси Z

vertex.prototype.rotateZ_around_point = function(sinZ, cosZ, a) {
var xp = a.x+(this.x-a.x)*cosZ-(this.y-a.y)*sinZ;
var yp = a.y+(this.x-a.x)*sinZ+(this.y-a.y)*cosZ;
var zp = this.z;
this.x = xp;
this.y = yp;
this.z = zp;
};

// прототип поворота вокруг произвольной оси a относительно центра координат

vertex.prototype.rotate_axis = function(a, sin, cos) {
var temp = 1.0-cos;
var t1 = a.x*temp;
var t2 = a.y*temp;
var t3 = a.z*temp;
var tsinx = sin*a.x;
var tsiny = sin*a.y;
var tsinz = sin*a.z;
var xp = this.x*(t1*a.x+cos)+this.y*(t2*a.x-tsinz)+this.z*(t3*a.x+tsiny);
var yp = this.x*(t1*a.y+tsinz)+this.y*(t2*a.y+cos)+this.z*(t3*a.y-tsinx);
var zp = this.x*(t1*a.z-tsiny)+this.y*(t2*a.z+tsinx)+this.z*(t3*a.z+cos);
this.x = xp;
this.y = yp;
this.z = zp;
};

// прототип поворота вокруг произвольной оси a относительно точки b

vertex.prototype.rotate_axis_around_point = function(a, sin, cos, b) {
var temp = 1.0-cos;
var t1 = a.x*temp;
var t2 = a.y*temp;
var t3 = a.z*temp;
var tsinx = sin*a.x;
var tsiny = sin*a.y;
var tsinz = sin*a.z;
var tbx = this.x-b.x;
var tby = this.y-b.y;
var tbz = this.z-b.z;
var xp = b.x+tbx*(t1*a.x+cos)+tby*(t2*a.x-tsinz)+tbz*(t3*a.x+tsiny);
var yp = b.y+tbx*(t1*a.y+tsinz)+tby*(t2*a.y+cos)+tbz*(t3*a.y-tsinx);
var zp = b.z+tbx*(t1*a.z-tsiny)+tby*(t2*a.z+tsinx)+tbz*(t3*a.z+cos);
this.x = xp;
this.y = yp;
this.z = zp;
};

// прототип масштабирования, относительно центра координат

vertex.prototype.scale = function(sx, sy, sz) {
this.x *= sX;
this.y *= sY;
this.z *= sZ;
};

// прототип масштабирования относительно точки a

vertex.prototype.scale_point = function(sx, sy, sz, a) {
this.x = a.x+(this.x-a.x)*sX;
this.y = a.y+(this.y-a.y)*sY;
this.z = a.z+(this.z-a.z)*sZ;
};

// прототип масштабирования по оси X относительно центра координат

vertex.prototype.scaleX = function(sx) {
this.x *= sx;
};

// прототип масштабирования по оси Y относительно центра координат 

vertex.prototype.scaleY = function(sy) {
this.y *= sy;
};

// прототип масштабирования по оси Z относительно центра координат 

vertex.prototype.scaleZ = function(sz) {
this.z *= sz;
};

// прототип преобразования сдвига

vertex.prototype.transpose = function(incX, incY, incZ) {
this.x += incX;
this.y += incY;
this.z += incZ;
};

// прототип преобразования сдвига по оси X

vertex.prototype.transposeX = function(incX) {
this.x += incX;
};

// прототип преобразования сдвига по оси Y

vertex.prototype.transposeY = function(incY) {
this.y += incY;
};

// прототип преобразования сдвига по оси Z

vertex.prototype.transposeZ = function(incZ) {
this.z += incZ;
};

// прототип получение нормали

vertex.prototype.normal = function() {
return (Math.sqrt((this.x*this.x)+(this.y*this.y)+(this.z*this.z)));
};

// прототип получение единичного вектора

vertex.prototype.get_axis = function() {
var norm = this.normal();
return (new vertex(this.x/norm, this.y/norm, this.z/norm));
delete norm;
};

// прототип вычитания векторов

vertex.prototype.subtract = function(v) {
this.x -= v.x;
this.y -= v.y;
this.z -= v.z;
};

// прототип сложения векторов

vertex.prototype.addition = function(v) {
this.x += v.x;
this.y += v.y;
this.z += v.z;
};

// прототип получения вычитания векторов

vertex.prototype.get_subtract = function(v) {
return (new vertex(this.x-v.x, this.y-v.y, this.z-v.z));
};

// прототип получения сложения веторов

vertex.prototype.get_addition = function(v) {
return (new vertex(this.x+v.x, this.y+v.y, this.z+v.z));
};

// прототип умножения на число

vertex.prototype.multiplication = function(s) {
return (new vertex(this.x*s, this.y*s, this.z*s));
};

// прототип преобразования перспективы

vertex.prototype.perspective = function() {
var perRatio = (this.z/dist+1);
this.rx = cnx+this.x/perRatio;
this.ry = cny-this.y/perRatio;
};

// дополнительная функции для облегчения заливки грани куба

face = function (a) {
// чётность грани
this.c = c;
// массив точек грани
this.a = a;
// размерность грани
this.d = a.length-1;
};

// прототип закраски грани

face.prototype.draw = function() {
_root.lineStyle(0, 0x000000, 100);
_root.beginFill(0x999999, 50);
_root.moveTo(v[this.a[0]].rx, v[this.a[0]].ry);
for (var i = 1; i<=(this.d); i++) {
_root.lineTo(v[this.a[i]].rx, v[this.a[i]].ry, v[this.a[i+1]].rx, v[this.a[i+1]].ry);
}
_root.endFill();
};

// прототип заливки грани

face.prototype.fill = function() {
this.draw();
};

// функция, выполняемая один раз, после загрузке клипа

_root.onLoad = function() {
// задаём координаты центра клипа
cnx = 200;
cny = 200;
var ngran=0;
var npoint=0;
var position:Number=0;
var par:String;

rad = Math.PI/180;
par='TEXT';
dist = 1000;
f = new Array();
v = new Array();

for (var i:Number=0; i<par.length; i++)
{
    
if(par.charAt(i)=='t')
{
v[npoint] = new vertex(30+position, 0, 0);
v[npoint+1] = new vertex(40+position, 0, 0);
v[npoint+2] = new vertex(40+position, 50, 0);
v[npoint+3] = new vertex(60+position, 50, 0);
v[npoint+4] = new vertex(60+position, 60, 0);
v[npoint+5] = new vertex(10+position, 60, 0);
v[npoint+6] = new vertex(10+position, 50, 0);
v[npoint+7] = new vertex(30+position, 50, 0);

v[npoint+8] = new vertex(30+position, 0, 10);
v[npoint+9] = new vertex(40+position, 0, 10);
v[npoint+10] = new vertex(40+position, 50, 10);
v[npoint+11] = new vertex(60+position, 50, 10);
v[npoint+12] = new vertex(60+position, 60, 10);
v[npoint+13] = new vertex(10+position, 60, 10);
v[npoint+14] = new vertex(10+position, 50, 10);
v[npoint+15] = new vertex(30+position, 50, 10);

f[0] = new face([npoint+0, npoint+1, npoint+2, npoint+3 ,npoint+4 ,npoint+5 ,npoint+6 ,npoint+7]);
f[1] = new face([npoint+8, npoint+9, npoint+10, npoint+11 ,npoint+12 ,npoint+13 ,npoint+14 ,npoint+15]);
f[2] = new face([npoint+0,npoint+7,npoint+15,npoint+8]);
f[3] = new face([npoint+6,npoint+5,npoint+13,npoint+14]);
f[4] = new face([npoint+7,npoint+6,npoint+14,npoint+15]);
f[5] = new face([npoint+5,npoint+4,npoint+12,npoint+13]);
f[6] = new face([npoint+4,npoint+3,npoint+11,npoint+12]);
f[7] = new face([npoint+1,npoint+2,npoint+10,npoint+9]);
f[8] = new face([npoint+2,npoint+3,npoint+11,npoint+10]);
f[9] = new face([npoint+0,npoint+1,npoint+9,npoint+8]);
npoint=npoint+16;
position=position+70;
}
}

// инициализируем вершину центра куба
v[npoint] = new vertex(35, 40, 15);
// инициализируем грани куба



// инициализируем произвольные оси вращения
axisX = new vertex(1.0, 0.0, 0.0);
axisY = new vertex(0.0, 1.0, 0.0);
axisZ = new vertex(0.0, 0.0, 1.0);
// задаём колличество вершин
amount = v.length-1;
faces = f.length-1;
};


_root.onEnterFrame = function() {

// выполняем преобразование перспективы для всех вершин
for (var i = 0; i<=amount; i++) {
v[i].perspective();
}
_root.clear();
// цикл пребора всех лиц и закрашивание их
for (var i = 0; i<=faces; i++) {
f[i].fill();
}
}
stop();





в приципи все работает но появляется только одна буква
в переменной par хранится текст который нужно вывести

 smile  smile  smile в чем ошибка smile  smile  smile 

в части реализации 3D все должно быть нормально
   

Это сообщение отредактировал(а) Gigabyte - 16.5.2006, 15:03


--------------------

user posted image
user posted image
PM MAIL ICQ   Вверх
Maksys
Дата 18.5.2006, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Future Splasher
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 15.6.2005
Где: Екатеринбург

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



Читая твой код.. я бы, еслиб был компилятором... не выдал бы в output ни одного ексепшена smile
у тебя будет выводиться тока буква t маленька причем... 
Цитата(Gigabyte @  16.5.2006,  18:00 Найти цитируемый пост)
if(par.charAt(i)=='t')
{

а где остальной латинский алфавит?
И ваще половина кода не понятна... это точно все что ты прислал? а вообще ты хоть понимаешь что в нем происходит? 


--------------------
 С уважением, BiMaWa™©.
user posted image
user posted image
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Flash"
AlDev
SoWa
  • Если вы хотите предложить кому-либо работу, то пишите или в личку, или оставляйте сообщения в специально предназначеном для этого форуме "Объявления о найме специалистов"
  • Один вопрос - одна тема. Не надо переходов от одного вопроса к другому.
  • Если вы хотите показать какой-нибудь ваш мульт, причём показать, а не предоставить исходник, то вам сюда
  • Вопросы по разработке интернет-приложений на Flex и вопросы по MXML пишите в раздел Flex
  • Смотрим в будущее. ActionScript 3 обсуждается в форуме ActionScript 3
  • Новости из мира Flash.
  • New! [code=ascript][/code] - подсветка ActionScript + wikipedia help

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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 1,2 | Следующая тема »


 




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


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

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