¿Por qué la animación del lienzo se atasca en iOS? ¿Es un problema de escritura?
var? número? =?200;
var? ¿w? =?window.innerWidth
var? h? =?window.innerHeight
var? Máx. =?100;
var? _¿incógnita? =?0;
var? _y? =?0;
var? _z? =?150;
var? dtr? =?función(d)? {
¿Volver? ¿d? *?matemáticas. ¿Pi? /?180;
};
var? ¿Y? =?función()? {
¿Volver? math . sin(math . floor(math . random()?*?360)?*?math.pi?/?180);
};
var? dist? =?Función(p1,?p2,?p3)? {
¿Volver? Math.sqrt(Math.pow(p2.x?-?p1.x,?2)?+?Math.pow(p2.y?-?p1.y,?2)?+?Math.pow(p2. z?-?p1.z,?2));
var? Tarjeta pequeña.
=?{
obj:? {
x:? _x,
y:? _y,
z:? _z
},
dest:? {
x:? 0,
y:? 0,
z:? 1
},
Distancia:? {
x:? 0,
y:? 0,
z:? 200
},
ang:? {
cavión:? 0,
avión:? 0,
cteta:? 0,
Papá Noel:? 0
},
Zoom:? 1,
Pantalla:? {
x:? ¿w? /?2,
y:? h? /?2,
z:? 0
},
actualizar:? función()? {
cam.dist.x? =?cam.dest.x? -?cam obj . x;
Área de cámara y? =?Cam Deste? -?camobj.y;
cam.dist.z? =?cam.dest.z? -?cam obj.z;
cam.ang.cplane? =?-cam.dist.z? /?Math.sqrt(cam.dist.x?*?cam.dist.x?+?cam.dist.z?*?cam . dist . z);
cam.ang.splane? =?cam.dist.x? /?Math.sqrt(cam.dist.x?*?cam.dist.x?+?cam.dist.z?*?cam . dist . z);
cam.ang.ctheta? =?Math.sqrt(cam.dist.x?*?cam.dist.x?+?cam.dist.z?*?cam.dist.z)? /?Math.sqrt(cam.dist.x?*?cam.dist.x?+?Cam área y?*?Cam área y?+?cam.dist.z?*?cam . dist . z);
cam.ang.stheta? =?-Cam Disch? /?Math.sqrt(cam.dist.x?*?cam.dist.x?+?Cam área y?*?Cam área y?+?cam.dist.z?*?cam . dist . z);
}
};
var? ¿trans? =?{
Partes:? {
sz:? función(p,?sz)? {
¿Volver? {
x:? p.x? *?sz.x,
y:? p.y? *?Ciudad de Shenzhen,
z:? p.z? *?Shenzhen
};
},
Fu:? {
x:? función(p,? podredumbre)? {
¿Volver? {
x:? p.x,
y:? p.y? *?Math.cos(dtr(rot.x))? -?p.z? *?Math.sin(dtr(rot.x)),
z:? p.y? *?Math.sin(dtr(rot.x))? +?p.z? *?Math.cos(dtr(rot.x))
};
},
y:? función(p,? podredumbre)? {
¿Volver? {
x:? p.x? *?Math.cos(dtr(rot.y))? +?p.z? *?Math.sin(dtr(rot.y)),
y:? p.y,
z:? -p.x? *?Math.sin(dtr(rot.y))? +?p.z? *?Matemáticas.c
os(dtr(rot.y))
};
},
z:? función(p,? podredumbre)? {
¿Volver? {
x:? p.x? *?Math.cos(dtr(rot.z))? -?p.y? *?Math.sin(dtr(rot.z)),
y:? p.x? *?Math.sin(dtr(rot.z))? +?p.y? *?Math.cos(dtr(rot.z)),
z:? pz
};
}
},
pos:? función(p, ?pos)? {
¿Volver? {
x:? p.x? +?Posición x,
y:? p.y? +?Posición y,
z:? p.z? +?Posición z
};
}
},
punto de vista:? {
Avión:? función(p)? {
¿Volver? {
x:? p.x? *?cam.ang.cavión? +?p.z? *?cam.ang.splane,
y:? p.y,
z:? p.x? *?-cam.ang.splane? +?p.z? *?cam.ang.cplane
};
},
θ:? función(p)? {
¿Volver? {
x:? p.x,
y:? p.y? *?cam.ang.ctheta? -?p.z? *?cam.ang.stheta,
z:? p.y? *?cam.ang.stheta? +?p.z? *?cam.ang.ctheta
};
},
Configuración:? función(p)? {
¿Volver? {
x:? p.x? -?cam.obj.x,
y:? p.y? -?cam.obj.y,
z:? p.z? -?cam.obj.z
};
}
},
Perspectiva:? función(p)? {
¿Volver? {
x:? p.x? *?cam.dist.z? /?p.z? *?cam.zoom,
y:? p.y? *?cam.dist.z? /?p.z? *?cam.zoom,
z:? p.z? *?cam.zoom,
p:? cam.dist.z? /?pz
};
},
Pantalla:? función(p, ?disp)? {
¿Volver? {
x:? p.x? +?disp.x,
y:? -¿Pye? +?Pantalla,
z:? p.z? +?Mostrar z,
p:? p.p
};
},
Pasos:? función (_obj_,? sz,? techo,? pos,? disp)? {
var? _argumentos? =?trans.parts.sz(_obj_,?SZ);
_args? =?trans.parts.rot.x(_args,?rot);
_args? =?trans.parts.rot.y(_args,?rot);
_args? =?trans.parts.rot.z(_args,?rot);
_args? =?trans.parts.pos(_args,?pos);
_args? =?trans . punto de vista . plano(_args);
_args? =?trans .
gs? =?trans . =?trans . =?trans.disp(_args,?disp);
¿Regresar? _ args
}
};
(Función()?{
"¿Uso? Estricto";
var? =? función (parámetro)? {
this.transIn?{};
/p>
this.transIn.vtx? param . vtx);
this.transIn.sz? =?(param . SZ);
this. transIn.rot? >
this.transIn.pos? =?(param . pos);
tresD .prototype.vupd? =? ?paso de transacción(
this.transIn.vtx,
this. transIn.sz,
this.transIn.rot,
this.transIn.pos,
visualización de cámara
);
p>};
var?=?function()? {
¿Este.ville?=?0.04;
Esto, Lin ? =?360;
este.diff? =?200;
this.initPos? =?_ x;
¿Este juguete? =?_ y;
this . /p>
Build.prototype.go? =? function()? {
Este.canvas? =?document.getelementbyid("canv");
Esto. canvas.width
Este.Canvas.Height? =?window.innerHeight
Esto. $?=?canv. >Este .globalCompositeOperation?=?"source-end";
this.varr?=?[];
this.dist?=?[];
this.calc?=?[];
¿Para qué? (var?i?=?0,?lane.
=?núm? ¿I? <? len? yo++)? {
este . add();
}
¿Este rotObj? =?{
x:? 0,
y:? 0,
z:? 0
};
este.objSz? =?{
x:? ¿w? /?5,
y:? h? /?5,
z:? ¿w? /?五
};
};
¿Crear.prototipo.agregar? =?función()? {
this.varr.push(new?tresD({
vtx:?{
x:?rnd(),
y:?rnd(),
z:?rnd()
},
sz:? y:? 0,
z:?
x:?20,
y: -20,
z:?
pos: ? {
x:?*?Math.sin(360?*?Math.random()?*?Math.Pi?/?180),
y:? this.diff? *? Math.sin (360? *? Math. aleatorio ()? *? Math. Pi? /? 180), ? *?Math.Pi?/?180)
}
}));
this.calc.push({
x:?360?*?Math.random(),
y:?360?*?Math.random(),
z:?360?*?Math.random() ()
});
};
¿Construir.prototipo.upd? =?función()? {
cam.obj.x? +=?(this.toX?-?cam.obj.x)? *?0.05;
cam.obj.y? +=?(this.toY?-?cam.obj.y)? *?0.05;
};
¿Construir.prototipo.dibujar? =?Función()? {
Esto. $.clearRect(0, 0,?this.canvas.width,?this.canvas.height);
cam.upd();
this.rotObj.x? +=?0.1;
este.rotObj.y? +=?0.1;
este.rotObj.z? +=?0.1;
¿Para qué? (var?i?=?0;?i?<?this.varr.length;?i++)? {
¿Para qué? (var? var. en? this.calc[i])? {
¿Y si? (este.calc[i].
tieneOwnProperty(val))? {
¿este.calc[i][val]? +=?this.vel
¿Si? (este.calc[i][val)? >? esto.lim)? this.calc[i][val]? =?0;
}
}
this.varr[i].transIn.pos? =?{
x:? esta.diferencia? *?Math.cos(this.calc[i]). ¿incógnita? *?matemáticas. ¿Pi? /?180),
y:? esta.diferencia? *?Math.sin(this.calc[i]). ¿y? *?matemáticas. ¿Pi? /?180),
z:? esta.diferencia? *?Math.sin(this.calc[i]). z? *?matemáticas. ¿Pi? /?180)
};
this.varr[i].transIn.rot? =?this.rotObj
this.varr[i].transIn.sz? =?this.objSz
this.varr[i]. vupd();
¿Si? (this.varr[i].transOut.p?<?0)?Continuar;
var? ¿gramo? =?Esto. $.createradialgradient(this . varr[I]. transout . x,?this.varr[i].transOut.y?this.varr[i].transOut.p,?this.varr[i].transOut.x, ? this.varr[i].transOut.y? this.varr[i].transOut.p? *?2);
Esto. $.globalCompositeOperation? =?Más claro';
g.addColorStop(0,hsla(255,?255%,?255%,?1)');
g.addColorStop(.5, ?HSLA('?+?(I?+?2)?+?',85%,?40%,1)');
g.addColorStop(1,?HSLA('?+ ?(一)? +?',85%,?40%,.5)');
Esto. $.fillStyle? =?g;
Esto. $.begin ruta();
Esto. $.arc(this.varr[i].transOut.x,?this.varr[i].transOut.y?this.varr[i].transOut.p?*?2,?0,?Math.Pi? *?2,?false);
Esto. $.fill();
Esto.
$.close path();
}
};
¿Construir.prototype.anim? =?Función()? {
ventana.requestAnimationFrame? =?(función()?{
Return?window.requestAnimationFrame?||
Función(devolución de llamada,?elemento)?{
ventana.setTimeout( devolución de llamada,? 1000?/?60);
};
})();
var? ¿dibujos animados? =?Función()? {
esta actualización();
esta .draw();
ventana requestanimationframe(anim); bind(this);
ventana . requestanimationframe(anim);
};
Build.prototype.run? =?Función()? {
este . anim();
ventana . addevent listener(' mousemove ',? Función (e)? {
Esto. ¿Toxicología?= ? (e.clientX?-?This.Canvas.Width?/?2)?*?-0.8;
¿Este juguete? =?(e.clientY?-?This.Canvas.Height?/? 2)?*?0.8;
}.bind(this));
ventana addevent listener(' touch move ',? function(e)?{ p>
¿Si? (event.cancelable)? {
¿Si? (!event.defaultPrevented)? {
evento predeterminado();
}
¿Esta.toxicidad? =?(e.touches[0])?-?este.canvas.width?-0.8;
¿Este juguete? =?(e.toca[0]).
¿cliente? -? ¿Esta.altura.del.lienzo? /?2)?*?0.8;
}.binding(this));
ventana .addevent oyente(' mousedown ',? function(e)?{ p >
¿Para qué? (var?i?=?0;?i?<?100;?i++)? {
esto . add();
}
}.bind(this));
ventana .addevent listener(' touch start ',? function(e)?{
if? (event. cancelable)? {
Si? (!event.defaultPrevented)? }
¿Para qué? (var?i?=?0;?i?<?100;?i++)? {
esto add();
}
}.bind(this));
};
var? aplicación? =?¿Nuevo? build();
aplicación . ejecutar();
})();
ventana addevent ('cambiar tamaño',? función()? {
¿Ancho del lienzo? =?window.innerWidth
¿Lienzo? =?window.innerHeight
},?