asm vector module
by path411
HTML
<div id="write"></div>
JavaScript
function Vector2Module(stdlib) {
"use asm";
function divide(a, b) {
a = +a;
b = +b;
if(b == 0) {
return +0;
}
else {
return +(a/b);
}
}
function RotateX(x1, y1, x2, y2, a) {
x1 = +x1;
y1 = +y1;
x2 = +x2;
y2 = +y2;
a = +a;
return +((x1-x2) * stdlib.cos(a) - (y1-y2) * stdlib.sin(a)) + x2;
}
function RotateY(x1, y1, x2, y2, a) {
x1 = +x1;
y1 = +y1;
x2 = +x2;
y2 = +y2;
a = +a;
return +((y1-y2) * stdlib.cos(a) + (x1-x2) * stdlib.sin(a)) + y2;
}
function GetLength(x, y) {
x = +x;
y = +y;
return +stdlib.sqrt(x*x + y*y);
}
function GetDistanceTo(x1, y1, x2, y2) {
x1 = +x1;
y1 = +y1;
x2 = +x2;
y2 = +y2;
return +stdlib.sqrt(stdlib.abs((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)));
}
function GetNormalizedX(x, y) {
x = +x;
y = +y;
return +(divide(x, GetLength(x, y)));
}
function GetNormalizedY(x, y) {
x = +x;
y= +y;
return +(divide(y, GetLength(x, y)));
}
return {
"RotateX": RotateX,
"RotateY": RotateY,
"GetLength": GetLength,
"GetDistanceTo": GetDistanceTo,
"GetNormalizedX": GetNormalizedX,
"GetNormalizedY": GetNormalizedY
}
}
var v2module = new Vector2Module(Math);
var Vector2asm = {
'AddVector': function(v, va) {
v.X += va.X;
v.Y += va.Y;
return v;
},
'SubtractVector': function(v, va) {
v.X -= va.X;
v.Y -= va.Y;
...