Created
May 20, 2015 06:56
-
-
Save pdxjohnny/c4f6c9823d50f0c1dc3e to your computer and use it in GitHub Desktop.
Javascript math functions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script type="text/javascript"> | |
function factor ( mult, add ) | |
{ | |
if ( mult > 0 ) | |
{ | |
for ( var i = -mult; i < mult; ++i ) | |
{ | |
for ( var j = mult; j >= -mult; --j ) | |
{ | |
if ( i * j == mult && i + j == add ) | |
{ | |
return [ i, j ]; | |
} | |
} | |
} | |
} | |
else | |
{ | |
for ( var i = mult; i < -mult; ++i ) | |
{ | |
for ( var j = -mult; j >= mult; --j ) | |
{ | |
if ( i * j == mult && i + j == add ) | |
{ | |
return [ i, j ]; | |
} | |
} | |
} | |
} | |
} | |
function f ( a, b, c ) | |
{ | |
return factor( a * c, b ); | |
} | |
function para ( r, t ) | |
{ | |
var x = "r * cos(theta)"; | |
var y = "r * sin(theta)"; | |
x = x.replace("r", r); | |
x = x.replace("theta", t); | |
x = x.replace("r", r); | |
x = x.replace("cos(cos^-1(", "(("); | |
x = x.replace("sin(sin^-1(", "(("); | |
x = x.replace("cos^-1(cos(", "(("); | |
x = x.replace("sin^-1(sin(", "(("); | |
y = y.replace("r", r); | |
y = y.replace("theta", t); | |
y = y.replace("r", r); | |
y = y.replace("cos(cos^-1(", "(("); | |
y = y.replace("sin(sin^-1(", "(("); | |
y = y.replace("cos^-1(cos(", "(("); | |
y = y.replace("sin^-1(sin(", "(("); | |
return "(" + x + ", " + y + ")"; | |
} | |
function to_radians( degree ) | |
{ | |
return degree * Math.PI / 180; | |
} | |
/* | |
theta_one ___________ theta_two | |
\ / | |
\ / | |
\/ | |
|| | |
force | |
*/ | |
function vector_force( theta_one, theta_two, force ) | |
{ | |
theta_one = to_radians( theta_one ); | |
theta_two = to_radians( theta_two ); | |
var force_two_coefficiant = ( -Math.cos( Math.PI - theta_one ) / Math.cos( theta_two ) ); | |
var sum = Math.sin( Math.PI - theta_one ); | |
sum += Math.sin( theta_two ) * force_two_coefficiant; | |
var force_one = force / ( sum ); | |
var force_two = force_two_coefficiant * force_one; | |
return [ force_one, force_two ]; | |
} | |
function resultant_speed( magnitude_one, magnitude_two, angle_magnitude_two ) | |
{ | |
var angle = Math.sin(to_radians(angle_magnitude_two)); | |
var vector_x = Math.pow(angle * magnitude_two, 2); | |
var vector_y = Math.pow(angle * magnitude_two + magnitude_one, 2); | |
var vector = Math.sqrt( vector_x + vector_y ); | |
return vector; | |
} | |
function vector_magnitude( vector ) | |
{ | |
var sum = 0; | |
for ( var i in vector ) | |
{ | |
sum += Math.pow(vector[i], 2); | |
} | |
var magnitude = Math.sqrt( sum ); | |
return magnitude; | |
} | |
function vector_addition( vector_one, vector_two ) | |
{ | |
var vector = []; | |
for ( var i in vector_one ) | |
{ | |
vector.push(vector_one[i] + vector_two[i]); | |
} | |
return vector; | |
} | |
function vector_points( vector_one, vector_two ) | |
{ | |
var vector = []; | |
for ( var i in vector_one ) | |
{ | |
vector.push(vector_two[i] - vector_one[i]); | |
} | |
return vector; | |
} | |
function vector_subtraction( vector_one, vector_two ) | |
{ | |
var vector = []; | |
for ( var i in vector_one ) | |
{ | |
vector.push(vector_one[i] - vector_two[i]); | |
} | |
return vector; | |
} | |
function vector_multiplication( vector_one, vector_two ) | |
{ | |
var vector = []; | |
var mult = 1; | |
for ( var i in vector_two ) | |
{ | |
if ( typeof vector_one === "object" ) | |
{ | |
mult = vector_one[i]; | |
} | |
else | |
{ | |
mult = vector_one; | |
} | |
vector.push(mult * vector_two[i]); | |
} | |
return vector; | |
} | |
function vector_cross_product( vector_one, vector_two ) | |
{ | |
var cross_product = [ | |
vector_one[1] * vector_two[2] - vector_one[2] * vector_two[1], | |
vector_one[2] * vector_two[0] - vector_one[0] * vector_two[2], | |
vector_one[0] * vector_two[1] - vector_one[1] * vector_two[0] | |
]; | |
return cross_product; | |
} | |
function vector_dot_product( vector_one, vector_two ) | |
{ | |
var dot_product = 0; | |
for ( var i in vector_one ) | |
{ | |
dot_product += vector_one[i] * vector_two[i]; | |
} | |
return dot_product; | |
} | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment