Skip to content

Instantly share code, notes, and snippets.

@pdxjohnny
Created May 20, 2015 06:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pdxjohnny/c4f6c9823d50f0c1dc3e to your computer and use it in GitHub Desktop.
Save pdxjohnny/c4f6c9823d50f0c1dc3e to your computer and use it in GitHub Desktop.
Javascript math functions
<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