Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
89
Task/Draw-a-rotating-cube/JavaScript/draw-a-rotating-cube.js
Normal file
89
Task/Draw-a-rotating-cube/JavaScript/draw-a-rotating-cube.js
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<style>
|
||||
canvas {
|
||||
background-color: black;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<canvas></canvas>
|
||||
<script>
|
||||
var canvas = document.querySelector("canvas");
|
||||
canvas.width = window.innerWidth;
|
||||
canvas.height = window.innerHeight;
|
||||
|
||||
var g = canvas.getContext("2d");
|
||||
|
||||
var nodes = [[-1, -1, -1], [-1, -1, 1], [-1, 1, -1], [-1, 1, 1],
|
||||
[1, -1, -1], [1, -1, 1], [1, 1, -1], [1, 1, 1]];
|
||||
|
||||
var edges = [[0, 1], [1, 3], [3, 2], [2, 0], [4, 5], [5, 7], [7, 6],
|
||||
[6, 4], [0, 4], [1, 5], [2, 6], [3, 7]];
|
||||
|
||||
function scale(factor0, factor1, factor2) {
|
||||
nodes.forEach(function (node) {
|
||||
node[0] *= factor0;
|
||||
node[1] *= factor1;
|
||||
node[2] *= factor2;
|
||||
});
|
||||
}
|
||||
|
||||
function rotateCuboid(angleX, angleY) {
|
||||
|
||||
var sinX = Math.sin(angleX);
|
||||
var cosX = Math.cos(angleX);
|
||||
|
||||
var sinY = Math.sin(angleY);
|
||||
var cosY = Math.cos(angleY);
|
||||
|
||||
nodes.forEach(function (node) {
|
||||
var x = node[0];
|
||||
var y = node[1];
|
||||
var z = node[2];
|
||||
|
||||
node[0] = x * cosX - z * sinX;
|
||||
node[2] = z * cosX + x * sinX;
|
||||
|
||||
z = node[2];
|
||||
|
||||
node[1] = y * cosY - z * sinY;
|
||||
node[2] = z * cosY + y * sinY;
|
||||
});
|
||||
}
|
||||
|
||||
function drawCuboid() {
|
||||
g.save();
|
||||
|
||||
g.clearRect(0, 0, canvas.width, canvas.height);
|
||||
g.translate(canvas.width / 2, canvas.height / 2);
|
||||
g.strokeStyle = "#FFFFFF";
|
||||
g.beginPath();
|
||||
|
||||
edges.forEach(function (edge) {
|
||||
var p1 = nodes[edge[0]];
|
||||
var p2 = nodes[edge[1]];
|
||||
g.moveTo(p1[0], p1[1]);
|
||||
g.lineTo(p2[0], p2[1]);
|
||||
});
|
||||
|
||||
g.closePath();
|
||||
g.stroke();
|
||||
|
||||
g.restore();
|
||||
}
|
||||
|
||||
scale(200, 200, 200);
|
||||
rotateCuboid(Math.PI / 4, Math.atan(Math.sqrt(2)));
|
||||
|
||||
setInterval(function() {
|
||||
rotateCuboid(Math.PI / 180, 0);
|
||||
drawCuboid();
|
||||
}, 17);
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue