var c4 = document.getElementById("myCanvas4");
var cxt4 = c4.getContext("2d");
cxt4.lineWidth = 3;
var Points4 = new Array();
var startX4 = 250;
var startY4 = 250;
var distance3 = 500;
var eyePosition4 = {
x: 0,
y: 0,
z: 700
};
function init4() {
Points4[0] = {
x: 100,
y: 100,
z: 100
};
Points4[1] = {
x: 100,
y: 100,
z: -100
};
Points4[2] = {
x: -100,
y: 100,
z: -100
};
Points4[3] = {
x: -100,
y: 100,
z: 100
};
Points4[4] = {
x: 100,
y: -100,
z: 100
};
Points4[5] = {
x: 100,
y: -100,
z: -100
};
Points4[6] = {
x: -100,
y: -100,
z: -100
};
Points4[7] = {
x: -100,
y: -100,
z: 100
};
}
function changedistance4() {
for (var i = 0; i < Points4.length; i++) {
Points4[i].x = Points4[i].x * distance3 / Math.abs(eyePosition4.z - Points4[i].z);
Points4[i].y = Points4[i].y * distance3 / Math.abs(eyePosition4.z - Points4[i].z);
}
}
var currentAngle4 = 0;
var drawCube4 = function() {
cxt4.clearRect(0, 0, 1200, 1200);
init4();
rotate4(degToRad(currentAngle4))
changedistance4();
cxt4.strokeStyle = randomColor();
cxt4.beginPath();
cxt4.moveTo(startX4 + Points4[0].x, startY4 - Points4[0].y);
cxt4.lineTo(startX4 + Points4[1].x, startY4 - Points4[1].y);
cxt4.lineTo(startX4 + Points4[2].x, startY4 - Points4[2].y);
cxt4.lineTo(startX4 + Points4[3].x, startY4 - Points4[3].y);
cxt4.lineTo(startX4 + Points4[0].x, startY4 - Points4[0].y);
cxt4.moveTo(startX4 + Points4[4].x, startY4 - Points4[4].y);
cxt4.lineTo(startX4 + Points4[5].x, startY4 - Points4[5].y);
cxt4.lineTo(startX4 + Points4[6].x, startY4 - Points4[6].y);
cxt4.lineTo(startX4 + Points4[7].x, startY4 - Points4[7].y);
cxt4.lineTo(startX4 + Points4[4].x, startY4 - Points4[4].y);
cxt4.moveTo(startX4 + Points4[1].x, startY4 - Points4[1].y);
cxt4.lineTo(startX4 + Points4[5].x, startY4 - Points4[5].y);
cxt4.moveTo(startX4 + Points4[0].x, startY4 - Points4[0].y);
cxt4.lineTo(startX4 + Points4[4].x, startY4 - Points4[4].y);
cxt4.moveTo(startX4 + Points4[2].x, startY4 - Points4[2].y);
cxt4.lineTo(startX4 + Points4[6].x, startY4 - Points4[6].y);
cxt4.moveTo(startX4 + Points4[3].x, startY4 - Points4[3].y);
cxt4.lineTo(startX4 + Points4[7].x, startY4 - Points4[7].y);
cxt4.stroke();
}
drawCube4()
var distanceTag = 0;
var rotate4Async = eval(Jscex.compile("async", function() {
//当摄像机到显示屏的距离大于750,退出循环
while (true) {
if (distance3 < 200) distanceTag = 0;
if (distance3 > 1000) distanceTag = 1;
if (distanceTag == 1) distance3 -= 10;
if (distanceTag == 0) distance3 += 10;
currentAngle4 += 5;
drawCube4();
$await(Jscex.Async.sleep(100));
}
}));
function degToRad(a) {
return (a / (360 / (2 * Math.PI)));
}
//旋转
function rotate4(angle) {
for (var i = 0; i < Points4.length; i++) {
var tempX = Points4[i].x;
var tempZ = Points4[i].z;
Points4[i].x = Points4[i].x * Math.cos(angle) - Points4[i].z * Math.sin(angle);
Points4[i].z = Points4[i].z * Math.cos(angle) + tempX * Math.sin(angle);
}
for (var i = 0; i < Points4.length; i++) {
var tempY = Points4[i].y;
Points4[i].y = Points4[i].z * Math.sin(angle) - Points4[i].y * Math.cos(angle);
Points4[i].z = tempY * Math.sin(angle) + Points4[i].z * Math.cos(angle);
}
}
function randomColor() {
//16进制方式表示颜色0-F
var arrHex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
var strHex = "#";
var index;
for (var i = 0; i < 6; i++) {
//取得0-15之间的随机整数
index = Math.round(Math.random() * 15);
strHex += arrHex[index];
}
return strHex;
}
rotate4Async().start();
<script language="javascript" type="text/javascript" src="http://files.cnblogs.com/zhanglei644213943/uglifyjs-parser.js"></script>
<script language="javascript" type="text/javascript" src="http://files.cnblogs.com/zhanglei644213943/jscex.js"></script>
<script language="javascript" type="text/javascript" src="http://files.cnblogs.com/zhanglei644213943/jscex.builderBase.js"></script>
<script language="javascript" type="text/javascript" src="http://files.cnblogs.com/zhanglei644213943/jscex.async.js"></script>
<!--[if IE]>
<script language="javascript" type="text/javascript" src="http://files.cnblogs.com/zhanglei644213943/json2.js"></script>
<script language="javascript">
Jscex.config.codeGenerator = function (code) { return "false || " + code; }
</script>
<![endif]--><div style="border-bottom: #222 15px solid; border-left: #222 15px solid; background-color: #111; color: #ccc; border-top: #222 15px solid; border-right: #222 15px solid"><canvas id="myCanvas4" width="700" height="500">Your browser does not support the canvas element. </canvas></div>