Comunidad de diseño web y desarrollo en internet online

ayuda rotacion cubo 3d

Citar            
MensajeEscrito el 20 May 2008 07:12 pm
descargue un arcihov de como hacer rotar un cubo en 3d, anda bien, pero las imagenes estan de 100 x 100 y quiero dejarlas en 150 x 150 y al kambiarlas al rotar el cubo queda como deforme, porfavor quien me puede ayudar, este es el codigo:

var c = 100;
Color.prototype.sombra = function(p) {
var t = this.getTransform(), r = (c-p)/c;
this.setTransform({ra:p, rb:t.rb*r, ga:p, gb:t.gb*r, ba:p, bb:t.bb*r});
};
ponto = function (x, y, z) { this.x = x;this.y = y;this.z = z;};
sombra2 = function (a, b, c) { var db = b.x-a.x;if (!db) {return (a.y>b.y == c.x>a.x);}var dc = c.x-a.x;if (!dc) {return (a.y>c.y == b.x<a.x);}return ((b.y-a.y)/db<(c.y-a.y)/dc) ^ (a.x<b.x == a.x>c.x);};
arestas = function (pts, angulos) { var tps = new Array();var sx = Math.sin(angulos.x);var cx = Math.cos(angulos.x);var sy = Math.sin(angulos.y);var cy = Math.cos(angulos.y);var sz = Math.sin(angulos.z);var cz = Math.cos(angulos.z);var p, xy, xz, yx, yz, zx, zy;var i = pts.length;while (i--) {p = pts[i];xy = cx*p.y-sx*p.z;xz = sx*p.y+cx*p.z;yz = cy*xz-sy*p.x;yx = sy*xz+cy*p.x;zx = cz*yx-sz*xy;zy = sz*yx+cz*xy;tps[i] = new ponto(zx, zy, yz);}return tps;};
xyz = function (p1, po, p2) { var dx1 = p1.x-po.x, dy1 = p1.y-po.y;var dx2 = p2.x-po.x, dy2 = p2.y-po.y;var a1 = Math.atan2(dy1, dx1);var a2 = Math.atan2(dy2, dx2);var sa = (a1-a2)*.5;var ss = Math.SQRT2*Math.cos(sa);this._x = po.x;this._y = po.y;this._xscale = c;this._yscale = c*Math.tan(sa);this._rotation = (a1+a2)*.5*180/Math.PI;this.inclinacao._xscale = ss*Math.sqrt(dx2*dx2+dy2*dy2);this.inclinacao._yscale = ss*Math.sqrt(dx1*dx1+dy1*dy1);};
this.createEmptyMovieClip("alvo", c);
alvo._x = 2.5*c;
alvo._y = 1.1*c;
var pontosxyz = [new ponto(-c/2, -c/2, c/2), new ponto(c/2, -c/2, c/2), new ponto(c/2, c/2, c/2), new ponto(-c/2, c/2, c/2), new ponto(-c/2, -c/2, -c/2), new ponto(50, -50, -50), new ponto(50, 50, -50), new ponto(-50, 50, -50)];
var pontosxy = new Array();
var rotacao = new ponto(0, 0, 0);
var i, cubo = new Array();
for (i=0; i<6; i++) {
cubo[i] = alvo.attachMovie("diamante", "diamante"+i, i);
cubo[i].inclinacao.attachMovie("bjork"+(i+1), "bjork2", 0);
cubo[i]._color = new Color(cubo[i]);
}
alvo.createEmptyMovieClip("dado", c/10);
cubo[0].pontos = [3, 0, 1, 2];
cubo[1].pontos = [2, 1, 5, 6];
cubo[2].pontos = [6, 5, 4, 7];
cubo[3].pontos = [7, 4, 0, 3];
cubo[4].pontos = [7, 3, 2, 6];
cubo[5].pontos = [0, 4, 5, 1];
facecubo = function () { var p1 = pontosxy[this.pontos[0]];var p2 = pontosxy[this.pontos[1]];var p3 = pontosxy[this.pontos[2]];var p4 = pontosxy[this.pontos[3]];xyz.call(this, p1, p2, p3);var z = (p1.z+p3.z)/2;this.swapDepths(Math.round(c ^ 2+z*c));var zmax = c/2;var rezist = (c/zmax)*Math.max(0, z);this._color.setRGB(0);var contr = this.inclinacao.bjork2;if (sombra2(p1, p2, p3)) {if (contr._currentframe != 1) {contr.gotoAndStop(1);}this._color.sombra(rezist);} else {if (contr._currentframe != 2) {contr.gotoAndStop(2);}if (Key.isDown(1)) {this._color.sombra(c);} else {this._color.sombra(30);}}};
alvo.onEnterFrame = function() {
rotacao.x -= this._ymouse/(40*c);
rotacao.y += this._xmouse/(40*c);
pontosxy = arestas(pontosxyz, rotacao);
for (i=0; i<cubo.length; i++) {
facecubo.call(cubo[i]);
}
};
stop();

Por sanbekazul

1 de clabLevel



 

msie
Citar            
MensajeEscrito el 20 May 2008 07:18 pm
DESDE AKI DESKARGUE EL ARCHIVO PORFAVOR EL KE SEPA AYUDENME!

http://flash.astalaweb.net/3D%203/1_3D%203.asp

Por sanbekazul

1 de clabLevel



 

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.