mirror of
https://github.com/Febbweiss/sis.git
synced 2026-03-04 14:15:37 +00:00
83 lines
2.2 KiB
JavaScript
83 lines
2.2 KiB
JavaScript
function heriter(destination, source) {
|
|
function initClassIfNecessary(obj) {
|
|
if( typeof obj["_super"] == "undefined" ) {
|
|
obj["_super"] = function() {
|
|
var methodName = arguments[0];
|
|
var parameters = arguments[1];
|
|
return this["__parent_methods"][methodName].apply(this, parameters);
|
|
}
|
|
}
|
|
|
|
if( typeof obj["__parent_methods"] == "undefined" ) {
|
|
obj["__parent_methods"] = {};
|
|
}
|
|
}
|
|
|
|
for (var element in source) {
|
|
if( typeof destination[element] != "undefined" ) {
|
|
initClassIfNecessary(destination);
|
|
destination["__parent_methods"][element] = source[element];
|
|
} else {
|
|
destination[element] = source[element];
|
|
}
|
|
}
|
|
}
|
|
|
|
function distance(point1, point2) {
|
|
return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));
|
|
}
|
|
|
|
function normalize(vector) {
|
|
var norm = Math.sqrt(vector.x * vector.x + vector.y * vector.y);
|
|
if (norm == 0)
|
|
return {
|
|
x : 0,
|
|
y : 0
|
|
};
|
|
|
|
var x = vector.x / norm;
|
|
var y = vector.y / norm;
|
|
return {
|
|
x : x,
|
|
y : y
|
|
}
|
|
}
|
|
|
|
function angle(vector1, vector2) {
|
|
if ((vector1.x == 0 && vector1.y == 0)
|
|
&& (vector1.x == 0 && vector1.y == 0)) {
|
|
return 0;
|
|
}
|
|
|
|
if (vector1.x == 0 && vector1.y == 0) {
|
|
return Math.acos(vector2.x
|
|
/ Math.sqrt(vector2.x * vector2.x + vector2.y * vector2.y));
|
|
}
|
|
|
|
if (vector2.x == 0 && vector2.y == 0) {
|
|
return Math.acos(vector1.x
|
|
/ Math.sqrt(vector1.x * vector1.x + vector1.y * vector1.y));
|
|
}
|
|
|
|
var product = vector1.x * vector2.x + vector1.y * vector2.y,
|
|
alpha = Math.acos(product
|
|
/ (Math.sqrt(vector1.x * vector1.x + vector1.y * vector1.y) * Math
|
|
.sqrt(vector2.x * vector2.x + vector2.y * vector2.y))),
|
|
sign = normalize(vector1).y > normalize(vector2).y ? -1 : 1;
|
|
|
|
return sign * alpha;
|
|
}
|
|
|
|
|
|
function getAliensMidHeight() {
|
|
var higherAlien = Math.max.apply( null,
|
|
$(".alien").map(function() {
|
|
return $(this).y();
|
|
}).get() ),
|
|
lowerAlien = Math.min.apply( null,
|
|
$(".alien").map(function() {
|
|
return $(this).y();
|
|
}).get() );
|
|
|
|
return (higherAlien + lowerAlien) / 2;
|
|
} |