-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbeam.js
executable file
·77 lines (70 loc) · 2.43 KB
/
beam.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
'use strict'
function Beam(options) {
if (!options) throw new Error('не задано ни одной опции');
this.length = +options.length; //длина в мм
this.supports = options.supports || [];
this.loads = options.loads || [];
this.beamStart = options.beamStart || { //на случай, если надумаю расширить программу
x: canvas.width / 8,
y: canvas.height / 2
};
this.beamEnd = options.beamEnd || { //на случай, если надумаю расширить программу
x: canvas.width * 7 / 8,
y: canvas.height / 2
};
this.angle = options.angle || 0;
this.E = options.E || 1; //Young modulus
this.I = options.I || 1; //Moment of Inertia
this.momentExtremum = [];
}
Beam.prototype.addLoad = function(type, xStart, valueStart, xEnd, valueEnd) {
if (type != "distributed") {
xEnd = +xStart;
valueEnd = +valueStart;
}
var newLoad = {
type: type,
xStart: +xStart,
valueStart: valueStart, //значения нагрузок не преобразовал в числа специально, т.к. строковые значения потребуются при последующем расчете
xEnd: +xEnd,
valueEnd: valueEnd
};
this.loads.push(newLoad);
return this;
}
// пока предположим, что все задано корректно, не буду прицеплять проверки на правильность данных
Beam.prototype.addSupport = function(type, x) {
var obj = {
type: type,
x: +x
};
this.supports.push(obj);
return obj;
}
//внутренняя функция
Beam.prototype._addSupportReactions = function() {
for (var i = 0, len = this.supports.length; i < len; i++) {
var support = this.supports[i];
switch (support.type) {
case 'hinged-movable':
support.reactions = {
'V': null
};
break;
case 'hinged-fixed':
support.reactions = {
'V': null,
'H': null
};
break;
case 'rigid-clamping':
support.reactions = {
'V': null,
'H': null,
'M': null
};
break;
}
}
}
Beam.prototype.drawBeam = null; //эта, а также многие другие фундкции именно расования задаются в файле drawBeam