BTI AltSTU
Art Project   "JUBILEE"
60   years
Кафедра Технологии машиностроения и качества (ТМК) приглашает Всех желающих к участию в виртуальном Арт-проекте "ЮБИЛЕЙ", посвященном 60-летию инженерного машиностроительного образования в БТИ АлтГТУ наукограда Бийска.

Участникам предлагается создать собственную виртуальную каркасную вращающуюся 3-D скульптуру юбилейной тематики.

Лучшие работы будут награждены Дипломами 1,2,3 степени!

В основе проекта лежит компьютерная программа на языке программирования JavaScript, написанная студентом 2 курса направления подготовки 15.03.05 "Конструкторско-технологическое обеспечение машиностроительных производств".

Для отображения анимационной модели на экране компьютера достаточно скопировать представленный код в текстовый файл, например, с помощью программы «Блокнот», сохранить с расширением .html и открыть в любом интернет-браузере.

Для создания собственной 3-D конструкции необходимо правильно задать координаты узлов (массив p) и отрезки связывающие узлы (массив k). Нумерация координат узлов начинается с нуля. Отрезки задаются порядковыми номерами начальной и конечной координаты.

Работы принимаются до 15.05.2019 на электронную почту кафедры ТМК: tmk@bti.secna.ru
<!DOCTYPE html>
<html>
<head>
<title> JUBILEE </title>
<style>
body {margin:0}
</style>
</head>
<body>
<canvas></canvas>
<script>
canvas = document.querySelector("canvas");
c = canvas.getContext("2d");
h = canvas.height = window.innerHeight;
w = canvas.width = window.innerWidth;
p = [[ 1, 1, 1], <!-- Координаты узла (точки) 0 -->
[ 1, 1,-1], <!-- Координаты узла (точки) 1 -->
[ 1,-1, 1],
[ 1,-1,-1],
[-1, 1, 1],
[-1, 1,-1],
[-1,-1, 1],
[-1,-1,-1]];
k = [[ 0, 1], <!-- Отрезок от точки 0 до точки 1 -->
[ 1, 3],[ 3, 2],[ 2, 0],
[ 4, 5],[ 5, 7],[ 7, 6],[ 6, 4],
[ 0, 4],[ 1, 5],[ 3, 7],[ 2, 6]];
function s() { p.forEach ( function (n) {
n[0] *= 200; n[1] *= 200; n[2] *= 200; <!-- Масштаб -->
})}
function r (ab) { p.forEach ( function (n) {
x = n[0]; y = n[1]; z = n[2];
n[0] = x * Math.cos(a) - z * Math.sin(a);
z = z * Math.cos(a) + x * Math.sin(a);
n[1] = y * Math.cos(b) - z * Math.sin(b);
n[2] = z * Math.cos(b) + y * Math.sin(b);
})}
function d() {
c.save();
c.clearRect (00, w, h);
c.translate (w / 2, h / 2);
c.strokeStyle = "#f00"; <!-- Цвет линий -->
c.lineWidth = 5; <!-- Толщина линий -->
c.beginPath();
k.forEach ( function (n) {
c.moveTo ( p[n[0]][0], p[n[0]][1] );
c.lineTo ( p[n[1]][0], p[n[1]][1] );
});
c.closePath();
c.stroke();
c.restore();
}
s();
r (Math.PI/4Math.atan(Math.sqrt(2))); <!-- Угол наклона -->
setInterval (v, 15); function v() {r(0.010); d();} <!-- Скорость вращения -->
</script>
</body>
</html>


[ 1,-1, 1] [-1, 1,-1]